Java多线程编程核心技术--第五章

Chapter 5

第五章主要就是介绍了定时计划任务功能 Timer 对象的用法,它的内部使用多线程方式进行处理。
主要核心内容如下:
- 如何实现指定时间执行任务
- 如何实现指定周期执行任务

1

  • 常用API
    • schedule(TimerTask var1, Date var2) – 在指定日期执行一次某一任务
    • schedule(TimerTask var1, Date var2, long var3) – 在指定日期之后,按指定周期无限循环执行某一任务。
    • schedule(TimerTask var1, long var2) – 以当前时间为参考,延迟指定毫秒数后执行某一任务
    • schedule(TimerTask var1, long var2, long var4) – 以当前时间延迟指定毫秒数,在以某一时间间隔无限循环的执行某一任务
    • scheduleAtFixedRate(TimerTask var1, long var2, long var4) – 以当前时间延迟指定毫秒数,在以某一时间间隔无限循环的执行某一任务
    • cancel(TimerTask类中) – 是将自身从任务队列中清除
    • cancel(Timer类中) – 是将任务队列中全部任务清除(偶尔是无效的原因是可能没抢到队列锁)

Timer 类负责计划任务。TimerTask 类来封装任务。如果计划的时间早于现在时间,立即执行。

  • schedule 和 scheduleAtFixedRate 比较
条目 schedule scheduleAtFixedRate
延时 下次任务执行时间参考的是上一次任务的结束时间 下次任务执行时间参考的是上一次任务的结束时间
非延时 下次任务执行时间参考的是上一次任务的开始时间 下次任务执行时间参考的是上一次任务的结束时间

1. 它们俩在延时情况下是相同的,都是下次任务执行时间参考的是上一次任务的结束时间。
2. schedule 不具有追赶执行性,scheduleAtFixedRate 有追赶执行性。

猜你喜欢

转载自blog.csdn.net/ouzhuangzhuang/article/details/80607865