3

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

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

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

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

而且我安装了一个关闭挂钩(运行良好)。

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

(请注意,我不是在问这是否是一个好主意或不System.exit(...)传播代码库:这不是这个问题的目的)

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

4

2 回答 2

4

您可以添加将在系统退出时调用的 SecurityManager(以确定其是否允许)。您可以保存稍后调用它的位置或在 SecurityManager 中处理它。

于 2011-11-22T16:38:44.893 回答
-1

当 JVM 关闭时,您的关闭挂钩只会在单独的线程中运行您的可运行逻辑。你不能用这个做更多的事情。

于 2011-11-22T17:07:14.463 回答