一:配置线程类
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
@Configuration
public class ThreadConfig {
/**
* 核心线程大小
*/
@Value("${thread.corePoolSize}")
private int corePoolSize;
/**
* 最大线程大小
*/
@Value("${thread.maxPoolSize}")
private int maxPoolSize;
/**
* 休眠时间
*/
@Value("${thread.keepAliveTime}")
private long keepAliveTime;
@Bean
public ThreadPoolExecutor threadPoolExecutor() {
return new ThreadPoolExecutor(
corePoolSize,
maxPoolSize,
keepAliveTime,
TimeUnit.SECONDS,
new LinkedBlockingDeque<>(10000),
new ThreadPoolExecutor.AbortPolicy()
);
}
}
二:yml配置
thread:
corePoolSize: 10
maxPoolSize: 50
keepAliveTime: 10
三:demo示例
@Autowired
private ThreadPoolExecutor executor;
//方法完成后的处理,supplyAsync有返回值
CompletableFuture<String> infoFuture = CompletableFuture.supplyAsync(() -> {
return "成功";
}, executor);