黑马程序员技术交流社区
标题:
关于thread的问题
[打印本页]
作者:
党传才
时间:
2012-4-20 17:14
标题:
关于thread的问题
碰到一个问题:如果 Thread 被阻塞到 IO 操作上时,主线程(即创建这个线程的线程)无法关闭此线程。
普通的关闭可以如下:
public void run()
{
while(true)
{
//do something
try
{
sleep(1000);
}
catch(InterruptException ex)
{
break; // 当父线程调用该线程的interrupt方法时,抛出异常后,break
}
}
}
如果在 do something 的时候被 IO 操作阻塞,则父线程使用 interrupt 方法时,没有任何效果。即不能正常关闭线程执行。
我想看看大家有什么办法,可以使得父线程可以在任意时刻将子线程关闭。
作者:
liqian
时间:
2012-4-20 17:29
从某种程度上讲,做不到。
不管是父线程还是子线程,这只不过是在运行时谁建了谁时用的。
一旦所谓的子线程被启动,这两个线程就没有先后贵贱之分,任何线程都没有办法把另外一个线程终止的。
作者:
黑马—王宁
时间:
2012-4-20 19:34
在阻塞接受时,设置超时时间(setSocketOpt),这样,子线程就可以自己关闭socket。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2