spring boot —— 整合Scheduling定時任務
阿新 • • 發佈:2019-01-12
Spring 3.0後提供Spring Task實現任務排程,支援按日曆排程,相比Quartz功能稍簡單,但是在開發基本夠用,支 持註解程式設計方式。
序列任務
兩個任務方法由一個執行緒序列執行,方法執行完成task2再執行。
1 在spring boot 啟動類上添加註解: @EnableScheduling
測試程式碼:
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; /** * @author LYQ * @since 2018/12/19 14:55 */ @Component public class TestTask { @Scheduled(fixedRate = 3000)//每隔5秒執行一次 public void task1(){ System.out.println("定時任務測試1"); } }
引數說明:https://www.jianshu.com/p/1defb0f22ed1
並行任務
多個任務由不同的執行緒在並行執行,互不影響。
@Configuration @EnableScheduling public class AsyncTaskConfig implements SchedulingConfigurer, AsyncConfigurer { //執行緒池執行緒數量 private int corePoolSize = 5; @Bean public ThreadPoolTaskScheduler taskScheduler() { ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler(); scheduler.initialize();//初始化執行緒池 scheduler.setPoolSize(corePoolSize);//執行緒池容量 return scheduler; } @Override public Executor getAsyncExecutor() { Executor executor = taskScheduler(); return executor; } @Override public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() { return null; } @Override public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) { scheduledTaskRegistrar.setTaskScheduler(taskScheduler()); } }
注意:將@EnableScheduling新增到此配置類上,SpringBoot啟動類上不用再新增@EnableScheduling