springboot定时任务配置多线程

前言
springboot只是配置@EnableScheduling和@Scheduled注解,默认情况下只会用单线程执行任务。要想使用多线程则还需要配置调度器和线程池。多线程可以让不同任务同一周期时刻执行。

配置

@EnableScheduling
@EnableAsync
public class SpringConfig extends WebMvcConfigurerAdapter {

    @Bean
    public TaskScheduler taskScheduler() {
        ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
        taskScheduler.setPoolSize(5);
        return taskScheduler;
    }

    @Bean
    public TaskExecutor taskExecutor() {
        ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
        taskExecutor.setMaxPoolSize(12);
        taskExecutor.setCorePoolSize(4);
        return taskExecutor;
    }
}

补充

  1. 任务方法上没有加注解@Async,同一个任务只能执行上一周期完才会执行下一个周期。加上注解,只要到达周期时刻马上执行,不必等待上一周期结束。

你可能感兴趣的:(spring)