Timer

作者: 四喜汤圆 | 来源:发表于2018-06-19 21:54 被阅读6次
image.png

重点

1. shcedule()执行周期性任务相关方法和scheduledAtFixedRate()执行周期性任务相关方法的区别、联系

Tables shcedule()执行周期性任务相关方法 scheduledAtFixedRate()执行周期性任务相关方法
区别 无追赶性 有追赶性
联系 任务执行延时:下一任务开始执行时刻=上一任务结束执行时刻+period 未延时:下一任务开始执行时刻=上一任务开始执行时刻+period

追赶性:假设任务执行周期为1,当前时刻为0,设置任务开始时间为-20(这20个间隔内可执行20个任务),
调用schedule()相关方法执行周期性任务:第一次任务开始执行时刻:0,执行[0,+无穷)这个时间段内所对应的Task任务;
调用shceduledAtFixedRate()相关方法执行周期性任务:第一次任务开始执行时刻:0。[-20,0],[0,+无穷)这两个时间段内所对应的Task任务被“补充性”地执行

2.JDK1.5后推荐用ScheduledThreadPoolExecutor代替Timer

Tables Timer ScheduledThreadPoolExecutor
任务调度时机 基于绝对时间 基于相对时间
TimerTask中出现未捕获异常时 会造成Timer线程终止,后续任务得不到执行 不存在此问题
image.png

参考文献

Java:如何正确使用Timer【java定时器的使用(Timer) 】
ScheduledExecutorService 与 Timer 相关题目解析
高洪岩_Java多线程编程核心技术

相关文章

网友评论

      本文标题:Timer

      本文链接:https://www.haomeiwen.com/subject/rnseeftx.html