重複の可能性:
シャットダウン フックが破損した場合
JVM がクラッシュした場合、shutdownhook がシナリオで実行されることが保証されているかどうかを知りたいです。
いいえ。ドキュメントから:
まれに、仮想マシンが異常終了する場合があります。つまり、正常にシャットダウンせずに実行を停止する場合があります。これは、たとえば、Unix の SIGKILL シグナルまたは Microsoft Windows の TerminateProcess 呼び出しで、仮想マシンが外部で終了したときに発生します。たとえば、内部データ構造が破損したり、存在しないメモリにアクセスしようとしたりして、ネイティブ メソッドが失敗した場合にも、仮想マシンは中止される可能性があります。仮想マシンが異常終了した場合、シャットダウン フックが実行されるかどうかは保証されません。
(私のものを強調)
ただし、shutdownhook は、JVM がシャットダウンを開始する前に実行する必要があるタスクのスレッドを作成します。マシン自体がシャットダウンされた場合、shutdownhook によって作成されたスレッドは、
実行のための CPU サイクルを取得できず、ここで shutdownhook は実行されないと思います.. .