线程池同步

开了线程池后,为了保证线程内的内容执行完成,再继续往下执行,需要用到同步,这样既节省串行的时间,又保证任务执行完成

方法一、threadPool.isTerminated()

//在任务执行完后,调用shutdown方法,将线程池中的空闲线程回收。该方法会使得keepAliveTime参数失效。
//关闭线程池
threadPool.shutdown();
//线程全部结束,在继续下一步
while (!threadPool.isTerminated()) {
}

方法二、计数器

CountDownLatch countDownLatch = new CountDownLatch(mapList.size());
executorService.execute(() -> {
//每当一个任务线程执行完毕,就将计数器减1
     countDownLatch.countDown();
});
//当计数器的值变为0时,在CountDownLatch上await()的线程就会被唤醒
countDownLatch.await();
posted @ 2021-11-23 14:46  昊昋  阅读(415)  评论(0编辑  收藏  举报