Spring 定时任务 fixedRate 和 fixedDelay 的区别

用过Spring的@EnableScheduling的都知道,我们用三种形式来部署计划任务,即@Scheduled注解的fixedRate(fixedRateString),fixedDelay(fixedDelayString),以及cron

cron不在这里讨论的范畴。我们着重在如何理解fixedRate和fixedDelay的区别

在Spring的Scheduled注解的JavaDoc 对此的解释很简单

public abstract long fixedRate
Execute the annotated method with a fixed period in milliseconds between invocations.
public abstract long fixedDelay
Execute the annotated method with a fixed period in milliseconds between the end of the last invocation and the start of the next.

fixedRate 每次任务结束后会从任务编排表中找下一次该执行的任务,判断是否到时机执行。fixedRate 的任务某次执行时间再长也不会造成两次任务实例同时执行,除非用了 @Async 注解。

fixedDelay 总是前一次任务完成后,延时固定时间然后执行一次任务

(全文完)

(转载本站文章请注明作者和出处 Spring 定时任务 fixedRate 和 fixedDelay 的区别