【发布时间】:2015-02-12 15:25:48
【问题描述】:
当我退出我的 SWT 应用程序时如何停止自定义线程?
MyThread 无限循环运行,直到某个条件成立:
class MyThread extends Thread {
@Override
public void run() {
do {
// Do stuff...
}
while (!this.isInterrupted() && otherCondition);
}
在我的 SWT 应用程序中,我确实启动了线程并尝试在 SWT 组合的 dispose() 方法中停止。但是,这个方法永远不会被调用。
class MyComposite extends Composite {
private MyThread myThread = null;
@Override
public void dispose() {
super.dispose();
if (null != this.myThread) {
this.myThread.interrupt();
}
}
public void somewhere() {
this.myThread = new MyThread();
this.myThread.start();
}
}
现在,我可能已经关闭了我的 SWT 应用程序窗口,但线程仍在运行(它仍然会创建调试输出)。 dispose() 方法不是自动调用的吗?如果用户关闭应用程序窗口,使线程停止的最佳方法是什么?
【问题讨论】:
标签: java multithreading swt dispose