Springboot 使用定時任務

 Springboot 自帶有定時任務,但是適用場景:

  1. 單體架構
  2. 單機部署

在某些場景下,還是很不錯的,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步:

  1. 在啓動類或者配置文件上添加註解 @EnableAsync
  2. 在方法上添加 @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 * * * * ?"));
  }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章