跳转至
本文阅读量

1. Spring Schedule

1.1 几种使用行为

1.1.1 基本 fixedRatefixedDelay

  • fixedDelay: 以上一次任务结束时间为计时开始,延迟 xxx 后执行下一次
  • fixedRate: 不考虑任务执行什么时候结束,总是以固定的速率(Rate) 对任务进行调度

1.1.2 fixedRate + 长时间任务

  • 如果 fixedRate 时,任务执行时间超过固定的间隔(Rate),则后继任务的执行会在当前执行结束后立即执行

1.1.3 fixedRate + 长时间任务 + 多任务

  • Spring Scheduler 默认是单线程实例进行调度,所以任务是顺序执行的
  • 如果 Scheduler 配置成多线程的线程池,则不同任务间 (task A 和 task B) 是可以并行的

注意

即使 Scheduler 配置成多线程,但 同一个任务不同实例 间,仍然是顺序执行的

1.1.4 fixedRate + @Async

如果想要相同任务的不同实例间也并行触发,可结合 @Async 对任务进行异步化来实现

1.2 参考