Spring定时任务 fixedDelay和fixedRate

Spring定时任务 fixedDelay和fixedRate 的区别

fixedDelay 的时间间隔是从上一次执行完成开始算。

fixedRate 的时间间隔是从上一次执行开始算,自然时间上是固定的。如果执行时间超过间隔,则上次执行完成后下次立即进行。

例:1

每5分钟执行一次 ,每次执行1分钟

fixedDelay fixedRate
第1次 0 0
第2次 6 5
第3次 12 5

例:2

每5分钟执行一次 ,每次执行10分钟

fixedDelay fixedRate
第1次 0 0
第2次 15 10
第3次 30 20

示例代码

 	@Scheduled(fixedRate = 5*1000)
    public void fixedRate() throws InterruptedException {
        System.out.println("fixedRate========="+format.format(new Date()));
        Thread.sleep(10*1000);
    }
    @Scheduled(fixedDelay = 5*1000)
    public void fixedDelay() throws InterruptedException {
        System.out.println("delay========="+format.format(new Date()));
        Thread.sleep(10*1000);
    }

输出(防止交叉,分别运行)

fixedRate=========2023-09-14 14:20:50
fixedRate=========2023-09-14 14:21:00
fixedRate=========2023-09-14 14:21:10
fixedRate=========2023-09-14 14:21:20

delay=========2023-09-14 14:21:45
delay=========2023-09-14 14:22:00
delay=========2023-09-14 14:22:15
delay=========2023-09-14 14:22:30

你可能感兴趣的:(spring,java,sql)