1.配置异步线程池参数
#核心线程数 spring.task.pool.corePoolSize=100 #最大线程数 spring.task.pool.maxPoolSize=200 #设置线程活跃时间(秒) spring.task.pool.keepAliveSeconds=30 #配置队列大小 spring.task.pool.queueCapacity=200
2.获取配置
@Configuration
@ConfigurationProperties(prefix = "spring.task.pool")
public class TaskThreadPoolConfig {
private int corePoolSize;
private int maxPoolSize;
private int keepAliveSeconds;
private int queueCapacity;
public int getCorePoolSize() {
return corePoolSize;
}
public void setCorePoolSize(int corePoolSize) {
this.corePoolSize = corePoolSize;
}
public int getMaxPoolSize() {
return maxPoolSize;
}
public void setMaxPoolSize(int maxPoolSize) {
this.maxPoolSize = maxPoolSize;
}
public int getKeepAliveSeconds() {
return keepAliveSeconds;
}
public void setKeepAliveSeconds(int keepAliveSeconds) {
this.keepAliveSeconds = keepAliveSeconds;
}
public int getQueueCapacity() {
return queueCapacity;
}
public void setQueueCapacity(int queueCapacity) {
this.queueCapacity = queueCapacity;
}
}
3.初始化线程池
@Configuration
public class TaskExecutePool {
@Autowired
private TaskThreadPoolConfig taskThreadPoolConfig;
@Bean(name = "ThreadPoolTaskExecutor")
public Executor threadPoolTaskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(taskThreadPoolConfig.getCorePoolSize());
executor.setMaxPoolSize(taskThreadPoolConfig.getMaxPoolSize());
executor.setQueueCapacity(taskThreadPoolConfig.getQueueCapacity());
executor.setThreadNamePrefix("ThreadPoolTaskExecutor-");
executor.setKeepAliveSeconds(taskThreadPoolConfig.getKeepAliveSeconds());
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
executor.initialize();
return executor;
}
}
4.Application 需要增加注解 @EnableAsync 和
@EnableConfigurationProperties({ TaskThreadPoolConfig.class }) // 开启配置属性支持
5.方法里面使用异步线程
@Async("ThreadPoolTaskExecutor")
public void test() {
//异步执行方法
}



