2012-06-23 97 views
1

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

我基本上有一个简单的用户界面与JButton(最初的文本设置为“开始”)。点击按钮后,文本将变为“停止”,并启动父SwingWorker线程。该线程将作为参数发送目录位置。这个线程轮流做的是为它在该文件夹中找到的每个文件生成一个执行特定操作的步骤。但是,我想要实现的是,只要单击JButton,父线程应该停止扫描文件夹,并且孩子应该停止扫描文件。

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

回答

1

一种方法是在父工中覆盖cancel(),并在每个子工作者上调用cancel(),最后调用super.cancel()

还考虑执行可单独取消的子工作者的JTable

+0

很酷....我会尝试这种方法。这看起来比使用全局变量要好。我实际上是在用户按下JButton时调用cancel()。我认为凌驾它取消孩子将是一个好主意。感谢@trashgod的建议! – Sujay