Java子线程如何返回一个得到结果的字符串给主线程呢?

-GSC -GSC 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
做的一个socket聊天室程序,然后子线程从服务器获取到了字符串后,想从子线程返回主线程显示在面板上,但是,我试了在子线程加get方法,结果返回的是null,也试了在主线程中判断为空就让主线程睡眠一段时间,但这个方法在第一次有效,第二次再调用就又有返回null了
这是主线程的代码:

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,请问这是怎么回事呢?
...全文
评论 10
收藏 已收藏
分享
返回顶部
-GSC
Eclipse 58,439 成员 49,457 内容