2013-02-05 68 views
8

可能重複被執行:
When Shutdown Hooks Break Bad是Shutdownhook保證如果JVM崩潰

我想知道,如果shutdownhook保證在方案執行,如果JVM崩潰。

+0

看起來甚至沒有閱讀的javadoc ... –

+2

好吧,如果你關閉了例如機器,它保證了沒有什麼是再也發生了。結論:JVM無法控制JVM之外的世界。 –

+0

你的意思是一個JVM崩潰?不。如果你的意思是在異常發生後關機,那麼他們應該運行。大多數時候,當人們談論JVM崩潰時,他們意味着他們的程序拋出了異常或錯誤。 –

回答

11

沒有。從the docs

在極少數情況下,虛擬機可能會中止,即停止運行而不會乾淨地關閉。當虛擬機在外部終止時發生這種情況,例如Unix上的SIGKILL信號或Microsoft Windows上的TerminateProcess調用。如果本機方法出錯,例如破壞內部數據結構或嘗試訪問不存在的內存,則虛擬機也可能中止。 如果虛擬機中止,則不能保證是否將運行任何關閉掛鉤。

(重點煤礦)

1

shutdownhook但是創建需要JVM之前完成任何任務的線程開始關機,如果機器本身得到關閉線程由shutdownhook創建
將永遠不會得到CPU週期有執行和我在這裏想shutdownhook不再執行...

+0

您問過如果JVM崩潰會發生什麼,而不是如果計算機被強制關閉會發生什麼情況。在後一種情況下,我認爲很明顯,斷電後不會執行任何操作(甚至不關閉掛鉤)。 – nneonneo

+0

嘿謝謝!!我只是在研究JVM可能出現崩潰的情況。 –