如果我将 关闭钩子 添加到Java程序的运行时中,如下所示:
public class MyShutdownHook implements Runnable { @Override public void run() { // Stuff I want executed anytime // the program, Java, or the OS exits normally, // crashes, or terminates unexpectedly for any reason. } } // The in another method... Runtime.getRuntime().addShutdownHook(new MyShutdownHook());
…那么,在程序/ Java / OS正常退出,崩溃或意外终止时,有 没有run()可能无法执行该方法的情况?如果是这样,什么情况下可以绕过Runtime关机钩,为什么?
run()
Runtime
如果该进程被终止,将不会执行关闭挂钩。
如果进程崩溃,将不会执行关闭挂钩。
如果您有Windows服务,并且关闭挂钩需要很长时间才能执行,则它将终止。