SwingWorker中断线程

时间:2012-06-23 04:23:52

标签: java multithreading swingworker

我正在构建一个应用程序,我将拥有一个SwingWorker线程,它本身可以旋转多个工作线程。当这些子线程完成它们的工作时,我想要实现的是当父线程被中断时,我希望所有的子节点也停止(,即它们也被中断)。我知道实现这一目标的一种方法是使用全局变量并让子线程在自己的代码中检查这个值。但是,我想知道这是否是一种正确的方法。任何意见/建议将不胜感激。

我基本上拥有一个带有JButton的简单UI(最初将其文本设置为“Start”)。单击该按钮时,文本将更改为“停止”,并启动父SwingWorker线程。该线程作为参数发送目录位置。这个线程反过来做的是为它在该文件夹中找到的每个文件生成一个脚踏,以执行特定的操作。但是,我想要实现的是,只要单击JButton,父线程就应该停止扫描文件夹,孩子们应该停止扫描文件。

只是想知道在这个操作的父线程和子线程之间建议的消息传递方法是什么。全局变量?任何意见/建议对我都非常有帮助。谢谢!

1 个答案:

答案 0 :(得分:1)

一种方法是覆盖父工作者中的cancel(),并在最终调用cancel()之前让它在每个子工作者上调用super.cancel()

还要考虑可以单独取消的JTable个执行子工作。