我已经开发了一个Java在线分布式应用程序,该应用程序通常一直在活动(不是GUI )。
如果管理员对这种关闭感兴趣,我有兴趣在关闭之前执行一些步骤。
我知道ctrl^c停止了JVM,我想知道我是否可以在JVM关闭之前挂钩并执行一些其他操作,或在Ctrl^d事件中添加一些钩子以做同样的事情。<<<<<<<<<<<<<<<<<<<<<<<</p>
我几乎确定某处有一个帖子描述了类似的问题,我会很喜欢链接到此类帖子。
我对任何第三方外部罐子或任何JNI解决方案都不感兴趣。
如果没有帖子讨论相同的问题,我会赞赏代码示例。
其他约束:此解决方案应适用于UNIX和Windows。
编辑
这里提出的一种解决方案是使用Runtime.getRuntime().addShutdownHook(new Thread() {})
据我了解,创建了一个新线程,该线程将聆听并等待关闭事件发生。
-
我想知道我是否可以以某种方式向发生关机的主线程发出信号(如我提到的,我有一个分布式系统,我需要告知此类事件的每个线程)?
-
我可以添加多个线程以收听此事件吗?
要对Ctrl C做出反应,您必须添加关闭挂钩:
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
System.out.println("I'll be back!");
}
});