我开发了一个 Java 在线分布式应用程序,它通常一直处于活动状态(不是 GUI)。
我有兴趣在关机前执行一些步骤,以防管理员对此类关机感兴趣。
我知道 CTRL^C 会停止 JVM,我想知道我是否可以在 JVM 关闭之前挂钩 CTRL^C 并执行一些额外的操作,或者在 CTRL^D 事件中添加一些挂钩以执行相同的操作。
我几乎可以肯定某处有一篇文章描述了类似的问题,我会很感激这些帖子的链接。
我对任何第三方外部 jar 或任何 JNI 解决方案都不感兴趣。
如果没有讨论相同问题的帖子,我将不胜感激代码示例片段。
附加限制:此解决方案应适用于 UNIX 和 Windows。
编辑
这里提出的一种解决方案是使用Runtime.getRuntime().addShutdownHook(new Thread() {})
据我了解,创建了一个新线程,它将侦听并等待关闭事件发生。
我想知道是否可以以某种方式向主线程发出关闭发生的信号(我有一个分布式系统,正如我提到的,我需要通知每个单个线程此类事件)?
我可以添加多个线程来监听这个事件吗?