3.3 Spring Task并行任务
3.3.1 需求分析
在项目通常是需要多个不同的任务并行去执行。
本节实现Spring Task并行执行任务的方法。
3.3.2 配置异步任务
创建异步任务配置类,需要配置线程池实现多线程调度任务。
@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
3.3.3 测试
通过测试发现两个任务由不同的线程在并行执行,互不影响。
但是我测试发现还是需要在启动类里加注解