我有一个java应用程序,在其中我尝试确保如果有人退出代码中的System.exit(),则应该调用侦听器来执行一些操作,例如记录消息和释放资源...

我该如何实施它,欢迎任何建议/方法。

有帮助吗?

解决方案

Runtime.addShutdownHook 方法可以添加一个shutdown hook,基本上就是一个未启动的 Thread, ,它在 Java 虚拟机关闭时执行。

然而,这是一个应该小心对待的领域,因为它是在 JVM 生命周期的一个非常敏感的时间执行的。从 API 规范 Runtime.addShutdownHook 方法:

在虚拟机的生命周期中,关闭钩子在微妙的时间内运行,因此应进行防御性编码。尤其应该将它们写成线程安全,并尽可能避免僵局。

无论如何,请务必阅读一些有关关闭挂钩如何工作的信息,因为如果没有做好充分的准备,可能不应该接触它们。请务必仔细阅读 API 规范 Runtime.addShutdownHook 方法。

以下是我通过搜索此答案的信息找到的几篇文章:

其他提示

在功能Runtime.addShutdownHook(Thread thehook)允许你注册一个钩子到Java虚拟机。结果 挂钩工作作为初始化但尚未启动的线程,该线程将退出JVM的调用。如果你注册多个钩,请注意,在其中钩的调用顺序是不确定的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top