SpringBoot中定时任务调度的两种方式

202 阅读1分钟

定时任务

每5s执行一次。 注释掉休眠代码

如果定时任务的处理时间超过了5s,定时任务会跳过上一个任务,在下一个5的整数中执行。 使用@Scheduled(fixedRate = 5000)注解

上次个任务执行完直接执行下一个任务。有利于任务的调度。 但是有个缺点

单个任务执行过长时,会在后面执行快的时候补充回来,相当于堆积了任务,再一一执行。 使用cron则不会出现该情况。

@Component public class TaskTest {

private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
int i = 0;

@Scheduled(cron = "0/5 * * * * ?")
public void upload(){
    try{
        i++;
        System.out.println("time:" + sdf.format(new Date()));
        if(i < 3){
            Thread.sleep(10000);
        }
        else{
            Thread.sleep(100);
        }
    }
    catch (Exception e){
        e.printStackTrace();
    }
}

}