Java でシグナル終了を適切に処理する
終了シグナルを適切に処理することは、アプリケーションをクリーンにシャットダウンし、データ損失を防ぐために不可欠です。プログラムを即時に終了する SIGKILL シグナルは、どのアプリケーションでもキャプチャできません。ただし、SIGTERM などの他のシグナルも処理できます。
シャットダウン フックによる SIGTERM の処理
SIGKILL 以外のシグナルを処理するには、ランタイムを使用してシャットダウン フックを登録できます。 .getRuntime().addShutdownHook() メソッド。このフックは、Java 仮想マシン (JVM) の終了時に実行されます。
シャットダウン フックのテスト
次のテスト プログラムは、Java 仮想マシン (JVM) が終了したときのシャットダウン フックの実行を示します。プロセスは SIGTERM (kill -15):
public class TestShutdownHook { public static void main(String[] args) throws InterruptedException { Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { System.out.println("Shutdown hook ran!"); } }); while (true) { Thread.sleep(1000); } } }
で終了されるときSIGTERM を実行すると、「シャットダウン フックが実行されました!」と出力されます。
SIGKILL 以降の処理
どのプログラミング言語でも SIGKILL を直接処理する方法はありません。ただし、別の解決策もあります:
これらの手法を利用することで、データ損失を防ぎ、SIGTERM などのシグナルが発生したときにアプリケーションを正常にシャットダウンできます。
以上がJava アプリケーションは SIGTERM のような終了信号をどのように適切に処理できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。