我有一个在循环中运行的线程,并且一旦启动线程的对话框关闭就想杀死一个线程。最好的方法是什么?
答案 0 :(得分:5)
您可以为该主题调用interrupt()
。但是,这不会停止线程,除非你在线程循环中对它做了一些事情。
Thread t = new Thread() {
@Override
public void run() {
while (shouldLoop() && !isInterrupted()) {
. . .
}
}
}();
// somewhere else:
t.interrupt(); // will exit thread on next loop iteration
如果您不想使用interrupt()
(例如,您没有对该线程的引用),您可以在线程代码可访问的某处设置一个标志。您仍然需要在线程循环中检查它并退出循环(以及run()
方法)以退出线程。
答案 1 :(得分:0)
您could listen对话框关闭事件,interrupt线程。