プロジェクト

全般

プロフィール

Javaプログラミング JVM終了時の処理

JVM終了時に処理をしたい

JavaVMが終了するときに、処理を行いたい場合は、ShutdownHookを使います。
JavaVMの非デーモンスレッドがすべて停止した時に、JavaVMがShutdownHookを呼び出します。典型的にはメインスレッドが停止し、他に非デーモンスレッドがないときに、ShutdownHookを登録しておくと、呼び出されます。

  • 非デーモンスレッドの最後の1つが停止したとき
  • OSからシグナル(TERM)を受け取ったとき(SIGTERM、SIGINT)
  • ターミナル上で起動したJavaVMでCtrl+Cを押したとき、ログオフしたとき
  • System.exitメソッドを内部で読んだとき

ShutdownHookの使い方

RuntimeインスタンスのaddShutdownHookメソッドで、ShutdownHookを登録します。addShutdownHookはスレッドを引数にとります。

        var handleThread = new Thread(() -> {
            System.out.println("shutdown hooked.");
        });
        Runtime.getRuntime().addShutdownHook(handleThread);


約1年前に更新