定时器 Timer
[toc]
定时器 Timer 的使用
Timer 类主要负责计划任务的功能,也就是在指定时间开始执行某一个任务。
主要作用:设置计划任务,但封装任务的类却是 TimerTask 类。
常用方法
schedule()
- schedule(TimerTask task,Date time):在指定的日期执行一次某一任务
- schedule(TimerTask task,Date firstTime,long period):在指定的日期之后按指定的间隔周期,无限循环地执行某一任务。
-
schedule(TimerTask task,long delay)
:以执行该方法当前的时间为基础时间,延迟指定毫秒数后执行一次任务。 - schedule(TimerTask task,long delay,long period):以执行该方法当前的时间为基础时间,延迟指定毫秒数后执行一次任务,再以某一时间间隔无限次地执行某一任务。
Timer 中允许有多个 TimerTask 任务:以队列的方式一个个被顺序性的执行。
TimerTask.cancel() & Timer.cancel 的区别:
- TimerTask 的 cancel():将自身从任务队列中进行清除
- Timer 的 cancel():将任务队列中全部的任务进行清空(有时不一定会停止任务)
scheduleAtFixedRate()
与 schedule() 方法基本一致,主要区别:追赶性。
- 不延时的情况下,两者一致。
- 如果出现延时,则 scheduleAtFixedRate() 会以上一次任务结束的时间来作为参考计算,而 schedule() 会立即执行。
注意
推荐使用 ScheduledExecutorService。
多线程并行处理定时任务时,Timer 运行多个 TimeTask 时,只要其中之一没有捕获抛出的异常,其它任务便会自动终止运行,使用 ScheduledExecutorService 则没有这个问题。
网友评论