java - 如何在关闭 Hook 中获取返回码

标签 java shutdown shutdown-hook

我需要根据我的申请结果修改JVM返回码。

但是显式调用 System.exit(code) 是有风险的,因为应用程序很复杂并且很难识别运行线程的结束。

所以我想到了使用 shutdown hook 在 JVM 退出之前修改返回码。

但是有一个问题,我怎样才能得到JVM的原始返回码,因为它可能是一个非0的错误码。

最佳答案

你不应该在 shutdown hook 中调用 exit 方法,System.exit(status) 内部调用 Runtime.getRuntime().exit(status); 这会导致你无限期阻止的应用程序。

根据 JavaDoc

If this method is invoked after the virtual machine has begun its shutdown sequence then if shutdown hooks are being run this method will block indefinitely.

您无权访问status,因为它可能会在所有关闭 Hook 被调用后发生变化。

关于java - 如何在关闭 Hook 中获取返回码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42127345/

相关文章:

java - 如何正常关闭/终止 java 进程?

java - 扫描代码库以使用已弃用的方法

java - 当我的 Java 应用程序退出/崩溃时,如何摆脱 Java 子进程?

java - 当一个单独的线程正在 hibernate 时关闭 java 应用程序是否不好?

process - 从 xv6 中的进程关闭 qemu

java - 如何从 Storm 拓扑主类调用关闭钩子(Hook)?

java - 在关闭钩子(Hook)中中断 Java 中的所有线程

Java 操作系统路径操作、连接和升级

java - 在头为空的链表中插入

java - 如何在android中移动 ImageView