所以我有一个swing应用程序,按下一个按钮时,将启动一个工作线程。如果主窗口关闭,则 JVM 仍在运行,工作线程不间断且无限期地运行。我希望工作线程在窗口关闭时死掉。
问问题
401 次
2 回答
1
当所有非守护线程都死掉时,JVM 退出。您的工作线程不是守护程序,因此不允许 JVM 退出。让工作线程成为守护进程:
workerThread.setDaemon(true);
另一种方法是interrupt()
在关闭主窗口时对您的线程进行处理,但这需要处理isInterrupted()
and InterruptedException
。
于 2012-08-25T18:59:40.787 回答
1
如果您希望整个应用程序在窗口关闭时终止,您可以使用以下命令:
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
如果您只想停止工作线程并可能做其他事情。您可以在框架上注册一个 WindowListener 并在 onWindowClosing 回调中,您可以检查事件类型并做任何您想做的事情。
于 2012-08-25T19:03:08.727 回答