线程池判断线程全部执行完毕

线程数量固定

预先知道线程数量,没啥好说的,直接CountDownLatch,如果执行完毕线程池立即可以关闭,也可以使用线程池的isTerminated()方法。

线程数量不固定

线程数量是动态变化的且线程池需要一直保持开启,这是常见的需求。

1.使用线程池submit创建带返回值类型线程得到Future集合,通过调用Future的isDone方法来确定所有线程执行结束。

2.设置一个静态变量原子类变量count,每次建立一个线程的时候+1,线程结束的时候-1(确保无论是否异常一定执行,最好是在finally语句块-1),主线程通过判断count值可以确定线程是否都执行结束。

原文地址:https://www.cnblogs.com/NoRegrets/p/14674635.html