0 条
LOGO
Yutuo

之前有一下项目,用到了Java中的定时执行方法。也就是Time中的scheduleAtFixedRate方法。在看代码时发现Time中的还有一个schedule方法也可以实现定时执行。于是我在网上找了一下两者异同。

两者的相同点

没什么多话,都可以实现定时执行

两者的区别

两者的区别主要在两面这两个方法

开始执行时间

schedule的开始时间是以第一次执行时间为基准,scheduleAtFixedRate是以指定开始时间为基准的。

比如,指定开始时间是10:05,间隔时间是5分钟,两者的启动时间都是10:06,任务所需时间1分钟的话。

schedule的前三次执行时间分别是:10:06、10:11、10:16
scheduleAtFixedRate的前三次执行时间分别是:10:06、10:10、10:15

scheduleAtFixedRate因为是以指定开始时间为基准计算的,所以前两次执行间隔只有4分钟。

任务执行时间超过执行间隔

schedule在任务执行时间超过间隔时间时,它会取消一次任务,下次依然按预计执行。
scheduleAtFixedRate会在超过间隔时间的任务之后,立即执行下一个任务,力争在同样的时间段前预计执行相同次数任务。

比如,指定开始时间是10:05,间隔时间是5分钟,两者的启动时间都是10:05,第一个任务所需时间10分钟的话,其它任务所需1分钟的话。

schedule的前五次执行时间分别是:10:05、10:15、10:20、10:25、10:30
scheduleAtFixedRate的前五次执行时间分别是:10:05、10:15、10:16、10:17、10:20

发表我的评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址