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 

猜你喜欢

转载自blog.csdn.net/ityqing/article/details/85097022
今日推荐