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的可能重复