schedule和scheduleAtFixedRate的区别-带例子
好久没写博客了,快成咸鱼了,今天就来试试手,主要还是被这个问题困扰久了,来记录一下
Timer的两种添加调度任务的方式:
贴一段api:
schedule
scheduleAtFixedRate
两种方式的区别:
一、如果第二个参数firstTime是在当前时间之前,那么scheduleAtFixedRate会追赶执行,就是把firstTime与当前时间之间,应该执行任务的次数执行完,schedule不会
栗子:
现象:无追赶执行
换成scheduleAtFixedRate
现象:追赶执行
二、如果任务执行时间大于任务执行间隔,也就是任务执行会延时的情况下,scheduleAtFixedRate的执行间隔是固定的,执行还是以上次任务执行的开始时间计算下一次任务的开始时间,schedule执行会以上一个任务执行的结束开始计算下一次任务的开始时间,但是如果时间小于当前时间,任务会立即执行;
附上网上一篇博客的解释,感觉是对的,至少执行现象是符合的:
现象:固定的间隔两秒执行
---------------
现象:执行时间以上一个任务执行结束时间计算
具体执行原理,没看源码。反正现象是知道了