Swing:如果主窗口关闭,如何杀死工作线程?

时间:2012-08-25 18:57:18

标签: java swing concurrency

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

2 个答案:

答案 0 :(得分:1)

当所有非守护程序线程死亡时,JVM退出。您的工作线程不是守护程序,因此不允许JVM退出。让工人thread to be daemon

workerThread.setDaemon(true);

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

答案 1 :(得分:1)

如果您希望整个应用程序在窗口关闭时终止,您可以使用:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

如果你只想停止工作线程,也许还要做其他事情。您可以在框架上注册WindowListener,在onWindowClosing回调中,您可以检查事件类型并执行任何操作。