Java SwingWorker中断线程

Java SwingWorker中断线程,java,multithreading,swingworker,Java,Multithreading,Swingworker,我正在构建一个应用程序,在这个应用程序中,我将有一个SwingWorker线程,它本身可以派生出多个工作线程。当这些子线程执行它们的工作时,我想要实现的是,当父线程被中断时,我希望所有子线程也停止(即,它们也被中断)。我知道实现这一点的一种方法是使用全局变量,让子线程在自己的代码中检查这个值。然而,我想知道这是否是一个正确的方法。如有任何意见/建议,将不胜感激 我基本上拥有的是一个带有JButton的简单UI(最初,它的文本设置为“Start”)。单击按钮时,文本变为“停止”,父SwingWor

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

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


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

一种方法是重写父工作进程中的
cancel()
,并让它在最终调用
super.cancel()
之前对每个子工作进程调用
cancel()


也可考虑执行可单独取消的子作业的<代码> JTAB/<代码>

< P>一种方法是在父工作人员中重写<代码>取消()/代码>,并在每个调用子调用之前调用“<代码>超级>取消()/<代码> < < /P>

也可以考虑执行子作业的<代码> JTAB/<代码>,可以单独取消。

酷……我会尝试这种方法。这看起来比必须使用全局变量要好。当用户按下JButton时,我实际上在调用cancel()。我认为取消孩子们是个好主意。谢谢@trashgood的建议!酷…我会试试这个方法。这看起来比必须使用全局变量要好。当用户按下JButton时,我实际上在调用cancel()。我认为取消孩子们是个好主意。谢谢@trashgood的建议!