首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何捕获System.exit事件?

如何捕获System.exit事件?
EN

Stack Overflow用户
提问于 2009-05-27 08:48:19
回答 2查看 32.2K关注 0票数 26

我有一个用java编写的应用程序,其中我试图确保如果有人退出代码中的System.exit(),就应该调用一个侦听器来做一些事情,比如记录消息和释放资源……

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-05-27 09:03:03

Runtime.addShutdownHook方法可用于添加一个关闭钩子,它基本上是一个未启动的Thread,它在关闭Java Virtual Machine时执行。

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

关闭钩子在虚拟机生命周期中的一个微妙时刻运行,因此应该进行防御性编码。特别是,它们应该被写成线程安全的,并尽可能避免死锁。

在任何情况下,一定要阅读一些关于关闭钩子的工作原理,因为在没有做好充分准备的情况下,可能不应该接近它们。请务必仔细阅读Runtime.addShutdownHook方法的API规范。

以下是我在搜索此答案时找到的几篇文章:

  • Shutdown Hooks --它展示了如何在shutdown.
  • Design of the Shutdown Hooks API中添加关闭钩子以进行日志记录的一个小示例--以问答方式解决了关闭钩子的一些设计决策。
票数 54
EN

Stack Overflow用户

发布于 2009-05-27 08:59:47

函数Runtime.addShutdownHook(Thread thehook)允许您在Java Virtual Machine中注册一个钩子。

钩子作为已初始化但未启动的线程工作,JVM将在退出时调用该线程。如果您注册了多个钩子,请注意调用这些钩子的顺序是未定义的。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/914666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档