我有一个用java编写的应用程序,其中我试图确保如果有人退出代码中的System.exit(),就应该调用一个侦听器来做一些事情,比如记录消息和释放资源……
我如何实现它,欢迎任何建议/方法。
发布于 2009-05-27 09:03:03
Runtime.addShutdownHook方法可用于添加一个关闭钩子,它基本上是一个未启动的Thread,它在关闭Java Virtual Machine时执行。
然而,这是一个应该小心处理领域,因为它是在JVM生命周期的一个非常敏感的时刻执行的。在Runtime.addShutdownHook方法的API规范中:
关闭钩子在虚拟机生命周期中的一个微妙时刻运行,因此应该进行防御性编码。特别是,它们应该被写成线程安全的,并尽可能避免死锁。
在任何情况下,一定要阅读一些关于关闭钩子的工作原理,因为在没有做好充分准备的情况下,可能不应该接近它们。请务必仔细阅读Runtime.addShutdownHook方法的API规范。
以下是我在搜索此答案时找到的几篇文章:
发布于 2009-05-27 08:59:47
函数Runtime.addShutdownHook(Thread thehook)允许您在Java Virtual Machine中注册一个钩子。
钩子作为已初始化但未启动的线程工作,JVM将在退出时调用该线程。如果您注册了多个钩子,请注意调用这些钩子的顺序是未定义的。
https://stackoverflow.com/questions/914666
复制相似问题