黑马程序员技术交流社区

标题: 关于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