spring 計劃任務@Scheduled之基於單線程池的坑

@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註解實現原理線程

相關文章
相關標籤/搜索