我一直在编写一个模拟,其中有一个用于参数输入的JFrame
GUI,另一个用于运行模拟动画的JFrame
。
我将动画与模拟一起更新,因此对重绘的调用来自函数runsimulation()
我为我的主GUI框架添加了一个EXIT_ON_CLOSE
,当动画正在运行时,我可以关闭框架并且它不会再次弹出,但我想知道是否可以关闭关闭动画帧时的模拟线程。
因为目前当我关闭框架时,模拟会继续在后台运行并正确完成,但我希望动画帧上的关闭事件也是“取消模拟”。
答案 0 :(得分:4)
这里有两个选择。一种选择是使正在运行的线程成为“守护进程”线程。这意味着该线程不会使程序保持运行,因此如果您关闭JFrame并退出应用程序,它将立即终止。
请注意,长时间运行的线程可能会突然终止并且在处理过程中。
(可能更好)方法是在线程上调用interrupt()
并让线程定期检查isInterrupted()
并在设置标志时干净地退出。