一、说明
java.util.Timer就是一个定时调用的调度器,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行指定的任务
二、创建
创建一个新计时器,无参构造,线程名默认以Timer为前缀
public Timer()
创建一个新计时器,指定是否为后台线程,后台线程当且仅当进程结束时自动注销掉
public Timer(boolean isDaemon)
三、模式
Timer有两种执行任务的模式:固定延迟调度和固定比率调度
1、固定延迟调度(schedule),所有后续的执行根据上次执行的结束时间以近似固定的周期进行调度,保障两次执行间的间隔
安排在制定的时间执行指定的任务,仅调度一次
public void schedule(TimerTask task,Date time)
安排在指定延迟后执行指定的任务,仅调度一次
Timer.schedule(TimerTask task,long delay)
安排指定的任务在指定的时间开始进行重复的固定延迟执行
public void schedule(TimerTask task,Date firstTime ,long period)
安排指定的任务从指定的延迟后开始进行重复的固定延迟执行
public void schedule(TimerTask task,long delay,long period)
2、固定比率调度(scheduleAsFixedRate),所有后续的执行根据初始执行的开始时间以近似固定的周期进行调度,从而希望减小延迟
安排指定的任务在指定的时间开始进行重复的固定速率执行
public void scheduleAtFixedRate(TimerTask task,Date firstTime,long period)
安排指定的任务在指定的延迟后开始进行重复的固定速率执行
public void scheduleAtFixedRate(TimerTask task,long delay,long period)
四、示例
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
// 定时调度的逻辑
}
}, 1000 * 10, 1000 * 60);