如果系统已经开始关闭,是否有可能在任何时候弄清楚,例如在catch块中或代码中的任何位置?
通常会触发 shutdownhooks ,但是Java运行时无法保证它们何时运行,所以我无法注册一个设置标志以便在别处读取。
是否可以调用某种方法来确定系统是否已进入该状态?对于instnace,如果有人调用System.exit(x)或Runtime.getRuntime()。exit(status);
答案 0 :(得分:1)
是的......通常会触发shutdownhooks,
...但Java运行时无法保证何时运行,
它无法保证将运行它们的订单,或者它们将完成。但它确实保证 1 启动它们。
...所以我无法注册一个设置标志以便在别处阅读。
一个能够提供关闭"的课程是微不足道的。旗。然后只需安排所有关闭挂钩来设置标志。如果他们都设置了它,那么首先启动哪个关闭挂钩并不重要。
1 - 此保证不是无条件的。在某些情况下,关闭钩子根本不会运行。例如,如果电源关闭,或者JVM是" kill -9" d。功能