gpt4 book ai didi

java - 如何在 SWT 应用程序中停止自定义 Thead?

转载 作者:行者123 更新时间:2023-12-01 22:27:29 25 4
gpt4 key购买 nike

退出 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com