Java 是否可以停止某个线程的运行?
我一直在编写一个模拟,它有一个用于参数输入的Java 是否可以停止某个线程的运行?,java,swing,thread-safety,jframe,Java,Swing,Thread Safety,Jframe,我一直在编写一个模拟,它有一个用于参数输入的JFrameGUI,还有一个单独的JFrame运行模拟动画 我将动画与模拟一起更新,因此重新绘制的调用来自函数runsimulation() 我已经为我的主GUI框架添加了一个EXIT\u ON\u CLOSE,当动画运行时,我可以关闭该框架,它不会再次弹出,但我想知道在关闭动画框架时是否可以关闭模拟线程 因为当前当我关闭帧时,模拟将在后台继续运行并正确完成,但我希望动画帧上的关闭事件也是“取消模拟”。这里有两种选择。一个选项是将正在运行的线程变成一个
JFrame
GUI,还有一个单独的JFrame
运行模拟动画
我将动画与模拟一起更新,因此重新绘制的调用来自函数runsimulation()
我已经为我的主GUI框架添加了一个EXIT\u ON\u CLOSE
,当动画运行时,我可以关闭该框架,它不会再次弹出,但我想知道在关闭动画框架时是否可以关闭模拟线程
因为当前当我关闭帧时,模拟将在后台继续运行并正确完成,但我希望动画帧上的关闭事件也是“取消模拟”。这里有两种选择。一个选项是将正在运行的线程变成一个“守护进程”线程。这意味着线程不会保持程序运行,因此如果关闭JFrame并退出应用程序,它将立即终止
注意,长时间运行的线程可能会突然终止,并在处理过程中被终止。
(可能更好)的方法是在线程上调用
interrupt()
,并定期进行线程检查isInterrupted()
,如果设置了标志,则可以干净地退出。这里有两种选择。一个选项是将正在运行的线程变成一个“守护进程”线程。这意味着线程不会保持程序运行,因此如果关闭JFrame并退出应用程序,它将立即终止
注意,长时间运行的线程可能会突然终止,并在处理过程中被终止。
(可能更好)的方法是在线程上调用interrupt()
,定期进行线程检查isInterrupted()
,如果设置了标志,则干净地退出。See的可能重复See的可能重复