定时器 Timer

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tinyDolphin/article/details/79273554

定时器 Timer

定时器 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 则没有这个问题。

猜你喜欢

转载自blog.csdn.net/tinyDolphin/article/details/79273554