1. 程式人生 > >spring boot —— 整合Scheduling定時任務

spring boot —— 整合Scheduling定時任務

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