杀死对话框上的线程关闭

Get*_*awn 1 java

我有一个在循环中运行的线程,并且一旦启动线程的对话框关闭就想杀死一个线程.最好的方法是什么?

Ted*_*opp 5

你可以打电话interrupt()给线程.但是,这不会阻止线程,除非你在线程循环中对它做了一些事情.

Thread t = new Thread() {
    @Override
    public void run() {
        while (shouldLoop() && !isInterrupted()) {
            . . .
        }
    }
}();

// somewhere else:
t.interrupt(); // will exit thread on next loop iteration
Run Code Online (Sandbox Code Playgroud)

如果您不想使用interrupt()(例如,您没有对该线程的引用),则可以在线程代码可访问的某处设置一个标志.您仍然需要在线程循环中检查它并退出循环(和run()方法)以退出线程.