所以我有一个swing应用程序,一个按钮,当按下时,将启动一个工作线程。如果主窗口关闭,则JVM仍在运行,工作线程不间断且无限期地继续运行。我希望工作线程在窗口关闭时死亡。
答案 0 :(得分:1)
当所有非守护程序线程死亡时,JVM退出。您的工作线程不是守护程序,因此不允许JVM退出。让工人thread to be daemon:
workerThread.setDaemon(true);
关闭主窗口时,另一种方法是interrupt()
您的线程,但这需要处理isInterrupted()
和InterruptedException
。
答案 1 :(得分:1)
如果您希望整个应用程序在窗口关闭时终止,您可以使用:
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
如果你只想停止工作线程,也许还要做其他事情。您可以在框架上注册WindowListener,在onWindowClosing回调中,您可以检查事件类型并执行任何操作。