0

所以我有一个swing应用程序,按下一个按钮时,将启动一个工作线程。如果主窗口关闭,则 JVM 仍在运行,工作线程不间断且无限期地运行。我希望工作线程在窗口关闭时死掉。

4

2 回答 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 回答