0

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

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

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

我几乎可以肯定某处有一篇文章描述了类似的问题,我会很感激这些帖子的链接。

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

如果没有讨论相同问题的帖子,我将不胜感激代码示例片段。

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

编辑

这里提出的一种解决方案是使用Runtime.getRuntime().addShutdownHook(new Thread() {})

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

  1. 我想知道是否可以以某种方式向主线程发出关闭发生的信号(我有一个分布式系统,正如我提到的,我需要通知每个单个线程此类事件)?

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

4

1 回答 1

1

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

Runtime.getRuntime().addShutdownHook(new Thread() {
    public void run() {
        System.out.println("I'll be back!");
    }
});
于 2012-10-29T14:10:42.193 回答