作者|雷哥来源|Java面试真题解析(ID:aimianshi666)转载请联系授权(微信ID:GG_Stone)很多场景下,我们需要等待线程池中的所有任务都执行完,才能进行下一步。对于线程Thread,很容易实现,加个join方法就可以解决。但是判断线程池比较麻烦。在本文中,我们提供了4种方法来判断线程池任务是否已经执行:使用isTerminated方法来判断。使用getCompletedTaskCount方法判断。使用CountDownLatch来判断。使用CyclicBarrier来判断。接下来,让我们一一来看。不判断的问题如果不判断线程池是否已经执行,会出现如下问题,如下代码所示:importjava.util.Random;importjava.util.concurrent.LinkedBlockingDeque;importjava.util.concurrent.ThreadPoolExecutor;importjava.util.concurrent.TimeUnit;publicclassThreadPoolCompleted{publicstaticvoidmain(String[]args){//创建线程池ThreadPoolExecutorthreadPool=newThreadPoolExecutor(10,20,0,TimeUnit.秒,新的LinkedBlockingDeque<>(1024));//添加任务addTask(threadPool);//打印结果System.out.println("线程池任务执行完成!");}/***添加任务到线程池*/privatestaticvoidaddTask(ThreadPoolExecutorthreadPool){//任务总数finalinttaskCount=5;//添加任务for(inti=0;i
