Java,托管应用程序关闭作为对CTRL ^ D的响应

时间:2012-10-29 13:23:58

标签: java event-handling shutdown multiplatform

我开发了一个Java在线分布式应用程序,它通常一直处于活动状态(不是GUI )。

我有兴趣在关机前执行一些步骤,以防管理员对此类关机感兴趣。

我知道CTRL ^ C会停止JVM,我想知道我是否可以挂钩CTRL ^ C并在JVM关闭之前执行一些额外的操作,或者为CTRL ^ D事件添加一些钩子以执行相同的操作。< / p>

我几乎可以肯定某个地方有一个帖子描述了类似的问题,我希望能够发布这些帖子的链接。

我对任何第三方外部罐子或任何JNI解决方案都不感兴趣。

如果没有帖子讨论同一个问题,我会很感激代码示例代码段。

附加约束:此解决方案应适用于UNIX和Windows。

修改

此处提出的一个解决方案是使用Runtime.getRuntime().addShutdownHook(new Thread() {})

据我所知,创建了一个新线程,它将监听并等待关闭事件发生。

  1. 我想知道我是否能以某种方式向主线程发出关闭信号的信号(我有一个像我提到的分布式系统,我需要告知每个线程这样的事件)?

  2. 我可以添加多个线程来监听此事件吗?

1 个答案:

答案 0 :(得分:1)

要对CTRL + C做出反应,你必须添加一个关闭钩子:

Runtime.getRuntime().addShutdownHook(new Thread() {
    public void run() {
        System.out.println("I'll be back!");
    }
});