Spring Task定时任务之详解Cron fixedDelay fixedRate

Spring Task定时任务之详解cron fixedDelay fixedRate

背景介绍

Spring非常强大,自带了Spring Task任务调度框架,基本能满足日常需求。比之更全面的框架还有quartz。相对的,学习成本也更高,有待下次学习分享。

Spring Task

Spring Task也分为注解和xml配置两种形式,由于开发的简洁性和便捷性,在开发时,一般推荐使用注解形式,只需在方法上添加一个注解@Scheduled,即代表开始定时任务。
@Scheduled有三个属性:

  1. cron :cron表达式是定时任务的关键,通过这个表达式能够清晰的知道任务什么时候执行,对于执行时间的设定非常的灵活。cron表达式的详细内容将在下次介绍分享;
  2. fixedDelay:fixedDelay控制方法执行的间隔时间,是以上一次方法执行完开始算起,如上一次方法执行阻塞住了,那么直到上一次执行完,并间隔给定的时间后,执行下一次;
  3. fixedRate :fixedRate是按照一定的速率执行,是从上一次方法执行开始的时间算起,如果上一次方法阻塞住了,下一次也是不会执行,但是在阻塞这段时间内累计应该执行的次数,当不再阻塞时,一下子把这些全部执行掉,而后再按照固定速率继续执行。;

区别

在 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 任务两次执行时间间隔是任务的开始点,而 fixedDelay 的间隔是前次任务的结束与下次任务的开始**
在这里插入图片描述
以上都是在单线程的情况下执行情况。若是有线程阻塞的情况发生,就需要多线程执行定时任务,这种情况又不大一样了。具体情况请参考:
https://yanbin.blog/spring-schedule-runner-threads/

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页