我有一个使用 addShutdownHook() 处理 Ctrl+C 的 Swing 应用程序,它工作正常,直到我有一个关闭任务调用一个函数,该函数在正常情况下更改 JLabel 文本,此时它挂起。
我认为问题在于 Swing EDT 已终止或正在等待某些事情。
有没有办法确定 EDT 已终止或“完成”(因此我可以避免调用 Swing 方法),或者防止在 Ctrl-C 上通常关闭所有窗口的行为?
只是为了澄清:
我在一个名为 的类中有一个方法stop()。在正常情况下,这可以被调用(连同它的补码start()),它会触发一连串的事情,导致 JLabel 被更新,以获得stop()已经发生的视觉反馈。
当我的关闭挂钩运行时,我需要调用stop()以正常关闭某些资源。
我要问的是如何检测 Swing EDT 不存在,以便我可以重写,stop()以便检测缺少 Swing 并避免调用 Swing 函数。