首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

java线程有关问题。

2012-01-20 
java线程问题。。(第一种情况) public void sendMessage(){try {System.out.println(str+!first)dos.writ

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这个变量资源是否独占的
[解决办法]

探讨

str这个变量资源是否独占的

[解决办法]
探讨
服务器端的代码如下:


import java.io.*;
import java.net.*;
import java.util.*;

public class ChatServer01 {

boolean connect=false;
ServerSocket ss=null;
List<Client> clients=new ArrayList<Client>()……

[解决办法]
探讨
引用:

引用:
服务器端的代码如下:


import java.io.*;
import java.net.*;
import java.util.*;

public class ChatServer01 {

boolean connect=false;
ServerSocket ss=null;
……

热点排行