import java.util.Date;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;
public class Test {
public static void main(String[] args) throws Exception {
// JRE 1.6.0_07
// java.util.Timer
// java.util.TimerTask
// 定期的(本例では5秒ごと)に処理を実行する
Timer timer = new Timer( "hoge" );
// 3秒後に1度目のタスクを実行し、その後は5秒置きに実行する
timer.scheduleAtFixedRate(new TestTimerTask(), 3 * 1000, 5 * 1000);
// 30秒待って、処理を終了する
Thread.sleep(10 * 3000);
timer.cancel();
// JavaDoc
// http://java.sun.com/javase/ja/6/docs/ja/api/
// 上記のような「固定頻度実行」だけでなく、処理終了後から指定秒後に再度
// 処理を実行するような「固定遅延実行」も可能
// 指定したname(hoge)はそのままスレッドの名前として設定される
// こんな阿呆な消し方も可能と言えば可能(Thread.stopはduplicated)
// Map<Thread, StackTraceElement[]> map = Thread.getAllStackTraces();
// for( Thread thread : map.keySet() ) {
// if( "hoge".equals( thread.getName() ) ) {
// thread.stop();
// }
// }
}
}
class TestTimerTask extends TimerTask {
public void run() {
System.out.println(new Date());
}
}