一、java配置
@Configuration
@EnableAsync
public class AsyncConfig {
/*
此处成员变量应该使用@Value从配置中读取
*/
private int corePoolSize = 10;
private int maxPoolSize = 200;
private int queueCapacity = 10;
private int keepAliveSeconds= 30000;
@Bean
public Executor taskExecutor() {
ThreadPoolTaskExecutor poolTaskExecutor = new ThreadPoolTaskExecutor();
//线程池所使用的缓冲队列
poolTaskExecutor.setQueueCapacity(queueCapacity);
//线程池维护线程的最少数量
poolTaskExecutor.setCorePoolSize(corePoolSize);
//线程池维护线程的最大数量
poolTaskExecutor.setMaxPoolSize(maxPoolSize);
//线程池维护线程所允许的空闲时间
poolTaskExecutor.setKeepAliveSeconds(keepAliveSeconds);
poolTaskExecutor.initialize();
return poolTaskExecutor;
}
}
@Configuration:表明该类是一个配置类
@EnableAsync:开启异步事件的支持
然后在定时任务的类或者方法上添加@Async 。最后重启项目,每一个任务都是在不同的线程中
二、配置文件
<!-- 配置线程池 -->
<bean id ="taskExecutor" class ="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor" >
<!-- 线程池维护线程的最少数量 -->
<span style="white-space:pre"> </span><property name ="corePoolSize" value ="5" />
<!-- 线程池维护线程所允许的空闲时间 -->
<span style="white-space:pre"> </span><property name ="keepAliveSeconds" value ="30000" />
<!-- 线程池维护线程的最大数量 -->
<span style="white-space:pre"> </span><property name ="maxPoolSize" value ="1000" />
<!-- 线程池所使用的缓冲队列 -->
<span style="white-space:pre"> </span><property name ="queueCapacity" value ="200" />
</bean>