如何在Java中杀死一个java.lang.Thread
?
请看这个Sun公司的线程,关于他们为什么废弃了Thread.stop()
。 它详细介绍了为什么这是一个糟糕的方法,以及应该怎样做才能安全地停止一般的线程。
他们推荐的方法是使用一个共享变量作为一个标志,要求后台线程停止。 然后,这个变量可以由一个不同的对象来设置,要求线程终止。
一般来说,你不'。
你可以用Thread.interrupt() (javadoc link)要求它中断它正在做的事情。
在javadoc中对其原因有一个很好的解释here (java technote link)
一种方法是通过设置一个类变量并将其作为哨兵。
Class Outer {
public static volatile flag = true;
Outer() {
new Test().start();
}
class Test extends Thread {
public void run() {
while (Outer.flag) {
//do stuff here
}
}
}
}
设置一个外部类变量,即上例中的flag = true。把它设置为false,就可以'kill'该线程。