@Scheduled--spring的定時任務,能夠快速建立定時任務;可是它實際上是有個不足之處的-----基於單線程池處理任務!!!spring
多數狀況下咱們會用它來作數據的定時更新,可是若是某個任務卡死,後面的任務全都得玩完!源碼分析
這種狀況咱們能夠自定義一個線程池:.net
@Configuration @EnableAsync public class ScheduleConfig { @Bean public TaskScheduler taskScheduler() { ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler(); //計劃任務線程池,每來一個任務創一個線程,直至線程池滿 taskScheduler.setPoolSize(n); return taskScheduler; } } //在任務方法上添加@Async註解 @Async @Scheduled(cron="0 */1 * * * ?") public void task1(){ ....... }
源碼分析:Springboot @Scheduled註解實現原理線程