有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

事件处理Java,管理应用程序关闭作为对CTRL^D的响应

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

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

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

我几乎可以肯定,有一个帖子描述了类似的问题,我希望能链接到这些帖子

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

如果没有帖子讨论同一个问题,我将非常感谢一个代码示例片段

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

编辑

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

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

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

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


共 (1) 个答案

  1. # 1 楼答案

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

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