方法一: 主线程里判断如果线程数量大于1,就一直等待,
while(Thread.activeCount()>0){
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
方法二: 用CountDownLatch 类 计数, 线程里每次完成一个,就调用 latch.countDown(), 主线程把回调业务写在 latch.await(); 后就行了
CountDownLatch latch=new CountDownLatch(5);
new Thread(()->latch.countDown());
try {
latch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
方法三: AtomicInteger i 计数
和CountDownLatch 类似
不过一个是调用减,这个是调用 加 i.getAndIncrement();
但是每个子线程结束的时候,都需要调用一下这个方法,判断是否完成了所有线程
if (i.getAndIncrement() == sum) {
callback();
}