是否可以阻止某个线程运行?

时间:2014-01-14 09:06:20

标签: java swing thread-safety jframe

我一直在编写一个模拟,其中有一个用于参数输入的JFrame GUI,另一个用于运行模拟动画的JFrame

我将动画与模拟一起更新,因此对重绘的调用来自函数runsimulation()

我为我的主GUI框架添加了一个EXIT_ON_CLOSE,当动画正在运行时,我可以关闭框架并且它不会再次弹出,但我想知道是否可以关闭关闭动画帧时的模拟线程。

因为目前当我关闭框架时,模拟会继续在后台运行并正确完成,但我希望动画帧上的关闭事件也是“取消模拟”。

1 个答案:

答案 0 :(得分:4)

这里有两个选择。一种选择是使正在运行的线程成为“守护进程”线程。这意味着该线程不会使程序保持运行,因此如果您关闭JFrame并退出应用程序,它将立即终止。

请注意,长时间运行的线程可能会突然终止并且在处理过程中。

(可能更好)方法是在线程上调用interrupt()并让线程定期检查isInterrupted()并在设置标志时干净地退出。