我开发了一个Java在线分布式应用程序,它通常一直处于活动状态(不是GUI )。
我有兴趣在关机前执行一些步骤,以防管理员对此类关机感兴趣。
我知道CTRL ^ C会停止JVM,我想知道我是否可以挂钩CTRL ^ C并在JVM关闭之前执行一些额外的操作,或者为CTRL ^ D事件添加一些钩子以执行相同的操作。< / p>
我几乎可以肯定某个地方有一个帖子描述了类似的问题,我希望能够发布这些帖子的链接。
我对任何第三方外部罐子或任何JNI解决方案都不感兴趣。
如果没有帖子讨论同一个问题,我会很感激代码示例代码段。
附加约束:此解决方案应适用于UNIX和Windows。
修改
此处提出的一个解决方案是使用Runtime.getRuntime().addShutdownHook(new Thread() {})
据我所知,创建了一个新线程,它将监听并等待关闭事件发生。
我想知道我是否能以某种方式向主线程发出关闭信号的信号(我有一个像我提到的分布式系统,我需要告知每个线程这样的事件)?
我可以添加多个线程来监听此事件吗?
答案 0 :(得分:1)
要对CTRL + C做出反应,你必须添加一个关闭钩子:
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
System.out.println("I'll be back!");
}
});