“fixedRate”:在开始下一次执行之前,从上次执行的开始等待X毫秒。如果当前执行超过'fixedRate'时间间隔,则下一个执行将排队,但只有下一个执行。它不会产生一系列排队执行
的
private static int i = 0;
@Scheduled(initialDelay=1000, fixedRate=1000)
public void testScheduling() throws InterruptedException {
System.out.println("Started : "+ ++i);
Thread.sleep(4000);
System.out.println("Finished : "+ i);
}
输出:
发起者:1
完成:1 // 4秒后
发起者:2 //立即W/O等待1秒中规定固定速率
表面处理:2 // 4秒后
等
“FIXEDDELAY”:等待来自先前执行的结束X米利斯开始下一次执行之前。无论当前执行的时间多少,下一次执行都是在添加“fixedDelay”间隔以结束当前执行时间之后开始的。它不会排队下一次执行。
private static int i = 0;
@Scheduled(initialDelay=1000, fixedRate=1000)
public void testScheduling() throws InterruptedException {
System.out.println("Started : "+ ++i);
Thread.sleep(4000);
System.out.println("Finished : "+ i);
}
输出:
发起者:1
完成:1 // 4秒后
发起者:1秒2个//等待如FIXEDDELAY指定
表面处理:2 4秒后
// 发起者:3 // 1秒后
等
在每个方法中我使用** Thread.sleep(5000)**来等待5s,但是我不知道看看有什么不同 – Adam
完全一样,我相信@ nikhil7610解释正确 – ottercoder