swing:如何在主窗口关闭时终止工作线程?

qkf9rpyu  于 2021-07-09  发布在  Java
关注(0)|答案(2)|浏览(557)

所以我有一个swing应用程序,一个按钮,当按下时,会启动一个worker线程。如果主窗口关闭,jvm仍然在运行,工作线程不间断地无限期地运行。我想在Windows关上的时候工人的线就死了。

wa7juj8i

wa7juj8i1#

如果要在窗口关闭时终止整个应用程序,可以使用以下方法:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

如果你只想停止工作线程,或者做其他事情。您可以在框架和onwindowclosing回调中注册一个windowlistener,您可以检查事件类型并执行任何您想要的操作。

sh7euo9m

sh7euo9m2#

当所有非守护进程线程死亡时,jvm退出。工作线程不是守护进程,因此不允许jvm退出。只需让工作线程成为守护进程:

workerThread.setDaemon(true);

另一种方法是 interrupt() 你的线程关闭主窗口时,但这需要处理 isInterrupted() 以及 InterruptedException .

相关问题