「Java」シャットダウンフックを登録する

以下の Runtime#addShutdownHook を使ってシャットダウンフックを登録すると、System#exit、あるいは、Ctrl + C 押下時などの JVM の終了時に実行できるみたいです。ちょっとやってみたので、その時のメモ。

・Runtime (Java Platform SE 7 )
http://docs.oracle.com/javase/jp/7/api/java/lang/Runtime.html#addShutdownHook(java.lang.Thread)

■ Test.java

public class Test {
        public static void main(String[] args) {
                Runtime.getRuntime().addShutdownHook(new Thread() {
                        public void run() {
                                System.out.println("shutdownHook !!");
                        }
                });
                // System#exit で JVM の終了
                System.exit(0);
                // Ctrl + C を試したい場合は処理止めるなりする
                //try {
                //        Thread.sleep(60000);
                //} catch (InterruptedException e) {
                //        e.printStackTrace();
                //}
        }
}

実行するとちゃんと "shutdownHook !!" と表示されます。

以上です。

[ 環境情報 ]
CentOS 6.2
Java SE 7 Update 51