作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
退出 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()
方法不是自动调用的吗?如果用户关闭应用程序窗口,使线程停止的最佳方法是什么?
最佳答案
所有控件在其父窗口关闭时都会被释放,但不是通过调用它们的 dispose
方法(调用名为 release
的内部方法)。因此,正如另一个答案中提到的,您需要使用 DisposeListener
来了解处置情况。
或者,您的线程可以调用 setDaemon(true)
- 关闭应用程序时,JVM 不会等待守护线程停止。
关于java - 如何在 SWT 应用程序中停止自定义 Thead?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28481282/
我是一名优秀的程序员,十分优秀!