1

我有一个在循环中运行的线程,并且想在启动线程的对话框关闭后终止一个线程。最好的方法是什么?

4

2 回答 2

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()方法)才能退出线程。

于 2012-11-20T02:41:13.780 回答
0

可以收听对话框关闭事件,并中断线程。

于 2012-11-20T02:41:04.420 回答