Springboot 自帶有定時任務,但是適用場景:
- 單體架構
- 單機部署
在某些場景下,還是很不錯的,Springboot自帶的方式有2種
1、通過註解的方式
- 在啓動類或者配置類上添加啓動定時任務的註解:@EnableScheduling
- 新增一個定時任務類,將其放入spring的容器中:@Component
- 新增一個方法,在方法上面添加定時任務的註解: @Scheduled
@Component
public class MyJob {
@Scheduled(cron = "0/3 * * * * ?")
public void scheduledTaskV1() {
System.out.println("執行定時任務");
}
}
2、實現 SchedulingConfigurer 接口
@Component
@EnableScheduling
public class MyJob2 implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.addCronTask(new CronTask(()->{
System.out.println("定時任務2");
},"0/3 * * * * ?"));
}
}
==================================================================================
默認情況下,Springboot的定時任務是單線程去執行的,如果需要多線程執行,則可以進行修改
步驟就2步:
- 在啓動類或者配置文件上添加註解 @EnableAsync
- 在方法上添加 @Async
@Scheduled(cron = "0/3 * * * * ?")
@Async
public void scheduledTaskV1() {
System.out.println("執行定時任務");
}
@Override
@Async
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.addCronTask(new CronTask(()->{
System.out.println("定時任務2");
},"0/3 * * * * ?"));
}