スケジュール実行

指定した時刻に、ある処理を実行するとか定期的に処理を実行したい(バッチ処理)とかいう時に便利なのはjava.util.Timer。でも意外と知られていない。

new Timer().schedule(new TimerTask() {
  public void run() {
    System.out.println("呼ばれました。");
  }
}, 1000);

これで1000ms後に「呼ばれました。」とコンソール出力される。第二引数の1000をDateオブジェクトにすればその日時に実行される。第三引数に60000とすれば1分ごとに実行される。
ちなみにTimerコンストラクタにtrueを渡すと、呼び出したスレッドが死んだ段階でタスクも死にます。なので、上記例の場合、trueを渡すと画面には何も表示されません。1000ms後の実行の前に親が終わってるから。
いやー簡単♪
・・・と思ってたら!java5からはjava.util.Timerではなく、java.util.concurrent.ScheduledExecutorServiceを使うのがオススメのようです。詳しくは以下の記事をご参照あれ。
http://www.02.246.ne.jp/~torutk/javahow2/timer.html#doc1_id43