2007-02-15
_ Runtime#addShutdownHook で JVM 終了時に処理を実行する
JVM 終了時に実行したい処理があるときに,Runtime#addShutdownHook を使うと,登録されたシャットダウンフックを実行してから JVM が終了するらしい.とりあえずどんな感じかサンプルを書いて試してみた.
class Shutdown extends Thread{ public Shutdown() { super(); } public void run() { System.out.println("[Shutdown] Shutting down."); } } class ShutdownTest { public static void main(String args[]) { System.out.println("[Main] Start"); Runtime.getRuntime().addShutdownHook(new Shutdown()); System.out.println("[Main] Shutdown hook added"); System.out.println("[Main] End"); System.exit(0); } }
実行してみる.
$ javac ShutdownTest.java $ java ShutdownTest [Main] Start [Main] Shutdown hook added [Main] End [Shutdown] Shutting down.
と,まぁこんな具合に,main の処理が終了してから,シャットダウンフックが実行されていることがわかりました.
ちょっと仕事でこんな感じのことをやる必要があったので調べていたのだけど,まだまだ知らないことばかりだなぁ.