基本说明
-
JDK1.3引入
-
允许按照固定频率重复执行某项任务
-
无法现实与日历相关的的任务调度,例如:每周一08:00执行
-
只适合对执行时间非常短的任务进行调度,因为在Timer中所有的TimerTask都在同一背景线程中执行,长时间的任务会严重影响到Timer的调度工作。
基本使用
范例
public class SimpleTimerTask extends TimerTask {
private int count = 0;
@Override
public void run() {
System.out.println("第" + count + "次任务执行.");
// 获取本次安排执行的时间点
Date exeTime = new Date(scheduledExecutionTime());
System.out.println("本次任务安排执行时间点为:" + exeTime);
// 在第2次执行后主动退出
if (++count > 1) {
cancel();
}
}
}
public class TimerRunner {
public static void main(String[] args) throws InterruptedException {
Timer timer = new Timer();
TimerTask task = new SimpleTimerTask();
timer.schedule(task, 1000L, 5000L);
System.out.println("开始时间:" + new Date());
TimeUnit.SECONDS.sleep(20);
// 如果不执行cancel(),程序不会结束
timer.cancel();
System.out.println("结束时间:" + new Date());
}
}