1.1、@Bean注入的线程池
@Configuration
public class ThreadPoolConfig {
@Bean(value = "callbackExecutor")
public ThreadPoolTaskExecutor callbackExecutor() {
ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
taskExecutor.setThreadNamePrefix("futureThreadPool");
taskExecutor.setCorePoolSize(20);
taskExecutor.setKeepAliveSeconds(300);
taskExecutor.setMaxPoolSize(100);
taskExecutor.setQueueCapacity(400);
taskExecutor.initialize();
return taskExecutor;
}
}
1.2、注入线程池处理异步任务
@Resource
private ThreadPoolTaskExecutor callbackExecutor;
public List<T> func(){
List<Callable<T>> TCallableList = new ArrayList<>();
for(int i = 0;i < len;i++){
Callable<T> callable = () -> {
};
TCallableList.add(callable);
}
try {
List<Future<T>> TFutureList = callbackExecutor
.getThreadPoolExecutor()
.invokeAll(TCallableList);
List<T> TList = new ArrayList<>();
for (Future<T> future : TFutureList) {
TList.add(future.get());
}
return TList;
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}