线程池同步
开了线程池后,为了保证线程内的内容执行完成,再继续往下执行,需要用到同步,这样既节省串行的时间,又保证任务执行完成
方法一、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();
本文来自博客园,作者:昊昋,转载请注明原文链接:https://www.cnblogs.com/hbaook-geui/p/15593178.html