Index > プログラム終了時に”ある処理”を絶対に実行したい(Java)
Sun, December 10, 2006

プログラム終了時に”ある処理”を絶対に実行したい(Java)

プログラム終了時に確実にある処理を実行したい、ということがあります。 (たとえば、編集中のドキュメントが未保存の場合、自動保存するとか)

GUIアプリケーションの場合は、 JFrameにWindowListenerをセットして、windowClosing()を 実装しておけばよいと思っていたのですが、 それではうまくいきません。以下のような場合...

たとえば、コンソールからCtrl+Cで終了した場合や、 MacOSXではCtrl+Qで終了した場合、 WindowListener#windowClosing()などが呼ばれないまま終了してしまいます。

そういう場合でもきちんと終了をハンドルして終了時の後始末処理を するには、以下のようにします。

Thread hook=new Thread(){
    public void run() {
        doSomethin();//終了処理
   }
};
Runtime.getRuntime().addShutdownHook(hook);
 Twitter
follow me on Twitter
 Categories