java线程问题。。
(第一种情况) public void sendMessage(){
			   try {
				   System.out.println(str+"!first");
				dos.writeUTF(str);
			} catch (
IOException e) {
				e.printStackTrace();
			}
		 }		  
		public void run() {
			try{
			//接受客户端发送过来的信息,并读取信息
			  while(connect){
				str=dis.readUTF();  				  
				//把信息发送给各个客户端
				for(int i=0;i<clients.size();i++){
					  //实例化各个客户端
					 Client c1=clients.get(i);
					 c1.sendMessage();					
				}
			  }
(第二种情况) public void sendMessage(String str){
			   try {
				   System.out.println(str+"!first");
				dos.writeUTF(str);
			} catch (IOException e) {
				e.printStackTrace();
			}
		 }		  
		public void run() {
			try{
			//接受客户端发送过来的信息,并读取信息
			  while(connect){
				str=dis.readUTF();  				  
				//把信息发送给各个客户端
				for(int i=0;i<clients.size();i++){
					  //实例化各个客户端
					 Client c1=clients.get(i);
					 c1.sendMessage(str);					
				}
			  }		      
        (问题:为什么从客户端输入时。。输出的结果不同。是什么原理呢?)
------解决方案--------------------不明白LZ想说什么?
线程的执行是随机的,如果是多线程的话
从str=dis.readUTF(); 到c1.sendMessage(str);(或c1.sendMessage();)
不能保证str的一致,因为第一个线程刚要执行c1.sendMessage(str);的时候,另一个线程可能会执行str=dis.readUTF(); 这样,str就被改变了
------解决方案--------------------只有上帝知道下一时刻cpu会执行哪一个线程
------解决方案--------------------str这个变量资源是否独占的
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------