我需要根据我的应用程序结果修改JVM返回代码。
但显式调用 System.exit(code) 是有风险的,因为应用程序很复杂,并且很难识别正在运行的线程的结束。
所以我想出了在 JVM 退出之前使用 shutdown hook 来修改返回代码。
但是有一个问题,我怎样才能得到JVM的原始返回码,因为它可能是一个错误码而不是0。
你不应该在 shutdown hook 中调用 exit 方法,System.exit(status)
内部调用Runtime.getRuntime().exit(status);
这将导致您的应用程序无限期地阻塞。
根据JavaDoc http://docs.oracle.com/javase/8/docs/api/java/lang/Runtime.html#exit-int-
如果在虚拟机开始运行后调用此方法
关闭序列,然后如果关闭挂钩正在运行此方法
将无限期地阻塞。
您无权访问status
,因为即使在调用所有关闭挂钩之后它也可能会发生变化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)