重点技术点
指定时间执行任务
指定周期执行任务
5.1 定时器Timer使用
Timer类
TimerTask类
// 在指定时间执行一次任务
schedule(TimerTask tast,Date time)
Timer timer=new Timer(true); // 设为守护进程,运行完就结束
MyTask extends TimerTask
MyTask task=new MyTask();
timer.schedule(task,time);
计划时间早于当前时间,提前运行
多个TimerTask任务,延时测试
顺序执行任务;
前一个任务执行时间会影响下一个任务的执行开始时间
// 指定周期执行一次任务
schedule(TimerTask task,Date firstTime,long period)
TimerTask类的cancel()方法
将自身从任务队列中清除
this.cancle();
Timer类的cancel()方法
将任务队列中全部任务清空
timer.cancel();
注意:此方法并不一定会停止执行计划任务
schedule(TimerTask task,long delay)
在当前时间基础上延迟指定毫秒数后执行任务
schedule(TimerTask task,long delay,long period)
在当前时间延迟指定毫秒数,再以指定周期无限执行任务
scheduleAtFixedRate(TimerTask task,Date firstTime,long period)
与schedule方法进行对比
不延迟的情况下,两者计算下一个任务的开始时间不同
延迟情况下,计算方式相同
schedule不延迟时,以上一次任务开始+delay时间计算,下一次任务的执行时间
scheduleAtFixedRate 不延迟时,以上一次任务开始+delay的时间计算下一次任务执行时间
延迟时,两者都是以上一次任务结束的时间计算下一次任务执行时间
追赶性比较:
schedule不具有追赶性
scheduleAtFixedRate 具有追赶性,会补充丢掉的时间的任务;