可能是重复问题:
当关闭钩子出现问题时
我想知道如果JVM崩溃,shutdownhook是否有保证可以执行。
可能是重复问题:
当关闭钩子出现问题时
我想知道如果JVM崩溃,shutdownhook是否有保证可以执行。
在极端情况下,虚拟机可能会中止运行,也就是说,在没有正常关闭的情况下停止运行。这种情况发生在虚拟机被外部终止时,例如在Unix上使用SIGKILL信号或在Microsoft Windows上使用TerminateProcess调用。如果本地方法出现问题,例如破坏内部数据结构或尝试访问不存在的内存,则虚拟机也可能中止运行。如果虚拟机中止运行,则无法保证是否会运行任何关闭挂钩。
(强调属于我)
ShutdownHook会为JVM开始关闭之前需要完成的任务创建一个线程,但如果机器本身关闭了,由shutdownhook创建的线程将永远无法获得CPU周期以执行它们,我认为在这里,shutdownhook将不会被执行...