从ShutdownHook中查找程序退出的原因

时间:2011-11-22 16:32:22

标签: java application-shutdown shutdown-hook

如果我有一个可以出于各种原因退出的Java程序,例如:

  • 因为设置为“关闭时退出”的主窗口已关闭

  • 因为代码中有一些System.exit(0)

  • 因为根本没有窗口(并且没有设置为关闭时退出)但是仍有几个线程正在运行,然后在一个点上只有守护程序线程在运行,因此程序退出。

我安装了一个关机钩子(运行正常)。

有什么方法可以从我的关闭钩子中知道导致Java程序退出的原因吗?

(请注意,我并不是在问代码库是否有System.exit(...)分布是不是一个好主意:这不是这个问题的主要内容)

基本上我想知道我是否强迫自己拦截每个可能的JVM出口点并在那里添加信息,或者是否已经有一种允许这样做的方法。

1 个答案:

答案 0 :(得分:-1)

当JVM关闭时,您的关闭挂钩将在单独的线程中运行您的可运行逻辑。你不能再做这件事。