今回は気分転換に java.util.Timer と java.util.TimerTask を試してみます。
この 2 つを使うと一定時間ごとに処理を実行するコードを簡単に書くことができます。
使い方はどことなく Thread の使い方に似ています。
ざっくりと手順を並べると次のようになります。
はい。簡単。
Timer を生成するときの引数や、 schedule() , scheduleAtFixedRate() メソッドの引数で細かい動きの制御も可能です。
と、いうわけでストップウォッチっぽいサンプルを書いてみました。
StopWatch.java
まずは TimerTask を継承したクラスを作りました。
定期的に呼ばれる処理、run() の中身は変数 second をインクリメントしてその内容を出力するだけです。
package javademo.timertest;
import java.util.TimerTask;
public class StopWatch extends TimerTask{
private long second;
public StopWatch() {
super();
second = 0;
}
public void run() {
second++;
System.out.println("StopWatch:" + second + " sec.");
}
}
TimerTest.java
main() メソッドを持つクラスです。
メインの処理を記述しています。
ちなみに下記のコード中で呼び出している Timer の cancel() メソッドは繰り返し処理を中断するメソッドです。
package javademo.timertest;
import java.io.IOException;
import java.util.Timer;
public class TimerTest {
public static void main(String[] args) {
Timer timer = new Timer();
StopWatch stopWatch = new StopWatch();
timer.scheduleAtFixedRate(stopWatch,0,1000);
try {
System.out.println("Key Press End StopWatch.");
System.in.read();
timer.cancel();
} catch (IOException e) {
e.printStackTrace();
}
}
}
一定時間ごとに繰り返し処理を実行するには Timer , TimerTask クラスを使うと簡単。
今回は他に結構情報があったので詳しい情報はそちらへ。
参考サイト
・Timerを使う。周期的に実行したり、一定時間後に実行したり
・@IT Javaのタスクを定期的に実行する