程序中使用了frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);但窗口关闭后应用程序依然无法退出
你是否有 addShutdownHook ?
并在其中做了某些耗时操作甚至死循环?
或者你是否是给 Frame 添加了窗口监听器,
并且在 windowClosing 方法中做了某些耗时操作?
没有死循环,但frame关闭时有可能循环在运行,有影响不?
你窗体是怎么关闭的?
点击的 X 吗?
还是用什么别的语句关闭的?
另外还有一种可能
就是你添加了 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 的那个窗体
有没有可能并不是最终显示出来的那个窗体?
点击X关闭窗口的
如果你代码不多的话,可以发上来看一下
如果代码比较复杂不便于发的话,我只能给你说几个我遇到过的引起类似问题的情景了:
1、addShutdownHook 时,不小心添加了耗时代码
2、addShutdownHook 中的代码执行时,和 EDT 发生了线程互锁
3、有 JNI 相关代码未释放系统资源
4、eclipse 长时间运行后自己出了异常,99LRC歌词程序实际上已经退了,但是控制台看起来依然处于运行状态
谢谢您的指导!经过修改测试,改成捕获frame退出事件自己控制就可以了,问题的原因应该是 之前frame关闭时循环还在运行所以应用程序不能结束。自己控制后,让这些循环正常结束就可以了,谢谢您!