当前位置: 技术问答>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;
}
}