System.exit()
プログラムが終了する前にシャットダウンフックを実行するために使用できます。これは、プログラムのすべての部分がお互いを認識できない(そして認識してはならない)大きなプログラムでシャットダウンを処理する便利な方法です。次に、誰かが終了したい場合、彼は単にを呼び出すことができSystem.exit()
、シャットダウンフック(適切に設定されている場合)は、ファイルのクローズ、リソースの解放など、必要なすべてのシャットダウンセレモニーを実行します。
「このメソッドは通常は戻りません。」メソッドが返らないことを意味します。スレッドがそこに行くと、それは戻ってきません。
プログラムを終了する別の、おそらくより一般的な方法は、単にmain
メソッドの最後に到達することです。ただし、デーモン以外のスレッドが実行されている場合、それらはシャットダウンされないため、JVMは終了しません。したがって、そのような非デーモンスレッドがある場合、すべての非デーモンスレッドをシャットダウンして他のリソースを解放するには、(シャットダウンフック以外の)いくつかの他の手段が必要です。他の非デーモンスレッドがない場合、から戻るmain
とJVMがシャットダウンされ、シャットダウンフックが呼び出されます。
何らかの理由でシャットダウンフックは過小評価され、誤解されているメカニズムのように思われ、人々はプログラムを終了するためにあらゆる種類の独自のカスタムハックを使ってホイールを再発明しています。シャットダウンフックの使用をお勧めします。とにかく使用するのは、標準ランタイムのすべてです。