当前位置: 技术问答>java相关
java 多线程问题
来源: 互联网 发布时间:2015-09-19
本文导语: java编写的网络多线程程序,在一个线程处于I/O阻塞方式时,我用 t.interrupt() ; t = null; 发现该线程无法杀掉,t为一个读socket的线程,在该线程run()中用while(true)中读socket数据。 | t.interrupt()并...
java编写的网络多线程程序,在一个线程处于I/O阻塞方式时,我用
t.interrupt() ;
t = null;
发现该线程无法杀掉,t为一个读socket的线程,在该线程run()中用while(true)中读socket数据。
t.interrupt() ;
t = null;
发现该线程无法杀掉,t为一个读socket的线程,在该线程run()中用while(true)中读socket数据。
|
t.interrupt()并不是用来杀线程的,他只是做一个标记,你应该在run中用interrupted来检测是否在线程外有人要让他中止,如果线程再阻赛的时候被interrupt(),线程会抛出异常,你可以在catch中退出run.
t = null;
没用的
t = null;
没用的
|
使线程中断的正确方法是在线程类里设置一个标志,通过改变这个标志来使线程退出,强行中断线程可能会带来意想不到的结果,如下所示:
public void run() {
while (true) {
// do something
....
if (finished) // finished is a boolean variable
break;
}
}
public void run() {
while (true) {
// do something
....
if (finished) // finished is a boolean variable
break;
}
}
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。