【发布时间】:2013-04-30 04:02:14
【问题描述】:
我有一个主线程,并在该线程中启动一个新线程。 (子线程)。该子线程打开一个服务器套接字并开始监听连接。 我希望该线程在主线程从外部获取消息时停止执行并关闭它已初始化的任何内容(如套接字)(不关心从哪里获取消息)。我应该如何停止线程并关闭所有连接是我想要的。
我应该使用共享变量吗?这样当主线程收到消息时,它应该修改它,而子线程应该不断检查该共享变量的变化?
我应该如何实现它?一些有用的链接可能会有所帮助或示例代码?
我尝试过的如下: 在主线程中我声明了一个变量
flag=0;
主线程收到消息后,设置
flag = 1 ;
线程监听变化如下:
void ()run{
while(true){
if(flag==1){
break;
}
sock1 = Ssocket.accept();
}
但是上面的代码根本不起作用。我该怎么做?
【问题讨论】:
-
我会尽力回复您...但是我的代码有什么问题?
-
标志只为你的父线程改变,子线程仍然认为它是“0”
-
使标志易变。
private volatile int flag;. -
如果你们中的任何人都可以解决有关 android-bluetooth 的问题,请帮我检查一下stackoverflow.com/questions/16413498/…
标签: java multithreading sockets