//自定义线程池
ThreadPoolTaskExecutor poolTaskExecutor = new ThreadPoolTaskExecutor();
poolTaskExecutor.setCorePoolSize(2);
poolTaskExecutor.setMaxPoolSize(10);
poolTaskExecutor.setQueueCapacity(100);
poolTaskExecutor.setAllowCoreThreadTimeOut(true);
poolTaskExecutor.initialize();
CountDownLatch countDownLatch = new CountDownLatch(2);//任务执行完成计数器
poolTaskExecutor.execute(() -> {
//your code...
countDownLatch.countDown();
});
poolTaskExecutor.execute(() -> {
//your code...
countDownLatch.countDown();
});
countDownLatch.await();//等待任务全部完成
//自定义线程池
@Bean
public Executor echartExecutor() {
log.info("ThreadPoolExecutor echartExecutor init ... ");
ThreadPoolExecutor threadPoolExecutor =
new ThreadPoolExecutor(10, 100, 30, TimeUnit.MINUTES, new ArrayBlockingQueue<>(2),
Executors.defaultThreadFactory(), new AbortPolicy());
log.info("ThreadPoolExecutor echartExecutor init completed !!! ");
threadPoolExecutor.prestartAllCoreThreads(); // 预启动所有核心线程
return threadPoolExecutor;
}
ExecutorService executorService = Executors.newFixedThreadPool(10);
CountDownLatch countDownLatch = new CountDownLatch(2);//任务执行完成计数器
executorService.execute(() -> {
//your code ...
countDownLatch.countDown();
});
executorService.execute(() -> {
//your code ...
countDownLatch.countDown();
});
countDownLatch.await();//等待任务全部完成
executorService.shutdown();
System.out.println("======执行完成了。。。");