这是主线程的代码:
SocketThread_in sk = new SocketThread_in(socket);
Thread tt = new Thread(sk);
tt.start();
if(sk.getstr() == null){
try {
Thread.sleep(300);
textArea_mess.append(sk.getstr()+"\n");
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
textArea_send.setText("");
}
这是子线程的代码:
public class SocketThread_in implements Runnable {
public Socket socket;
public volatile String str;
public SocketThread_in(Socket socket){
this.socket = socket;
}
@Override
public void run(){
try {
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while(true){
str = br.readLine()+"赋值成功";
System.out.println(str+"这里运行了");
}
}catch(Exception e){
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public String getstr(){
return str;
}
}
然后子线程那句测试输出的代码每次都能正确输出str得到的字符串,但是就是返回的时候就是null,请问这是怎么回事呢?