如何在日食工作中停止线程?

时间:2013-06-07 14:26:40

标签: multithreading eclipse-plugin

我真的需要这个网站上善良巫师的帮助。我在execute()的{​​{1}}创建了一份工作。这项工作有一个进度监控器,一切正常,直到我试图中止这项工作。

当用户点击取消按钮时,进度监视器屏幕会熄灭,但作业中启动的线程将继续在后台运行。在作业上调用AbstractHandler不会停止子线程。调用cancel()也没有任何作用。

interrupt()

1 个答案:

答案 0 :(得分:2)

你需要“不可阻挡的线索”来合作;它需要定期检查自己的中断标志,并在它变为真时停止。然后在“取消”代码中,调用unstoppableThread.interrupt(),它实际上会有效。

换句话说,不可阻挡线程的run()方法需要看起来像

public void run() {
    while (!Thread.interrupted()) {
        // Do a little work
    }
}