シャットダウンフックとは?

サンプルコード

package com.snail.exam

public final class FinalizerExam {
  
  public static void main(String[] args) {
    // シャットダウンフックの登録
    Runtime.getRuntime().addShutdownHook(
      new Thread() {
        public void run() {
          System.out.println("ちりぬべき 時知りてこそ 世の中の 花も花なれ 人も人なれ");
        }
      });

    // 無限ループの実行
    FinalizerExam thisObj = new FinalizerExam();
    thisObj.heartBeat();
  }

  /**
   * 無限ループを行うメソッド(waitを使うためにsynchronizedにしてある)
   */
  public synchronized void heartBeat() {
    while (true) {
      System.out.println("生きてるよ!");

      try {
        wait(3000L);
      } catch (InterruptedException ignoreEx) {
        ignoreEx=null;
      }
    }
  }
}

実行結果

C:\eclipse\workspace\SandBox>SET classpath=%classpath%;C:\eclipse\workspace\SandBox\bin

C:\eclipse\workspace\SandBox>java com.snail.exam.FinalizerExam
生きてるよ!
生きてるよ!
ちりぬべき 時知りてこそ 世の中の 花も花なれ 人も人なれ

Ctrl+C で VM を終了させると、シャットダウンフックに登録してある Thread#run() が実行される

参考文献


Java#JavaSE


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS   sitemap
Last-modified: 2006-06-15 (木) 01:05:47 (3824d)
ISBN10
ISBN13
9784061426061