记录一个面试问题,多线程中需要等子线程全部执行完成后再执行主线程
网上的方式
1.sleep()方式,这种做法不靠谱,不知道cpu到底哪个线程会拿到,不能使用
2.将子线程加入集合中(最好是线程安全的集合vector),再在主线程中循环遍历线程,使用join方法
3.使用CountDownLatch类(只能使用一次)
4.使用CyclicBarrier类
/chenyao1994/article/details/83037262
自己的想办法:
1.如果知道线程数量可以使用原子类,作为信号量
AtomicInteger
当一个线程执行完成后,自动-1。主线程使用while循环,判断是否值是否为0
这样的性能可能不是很好
2.锁
好像不太好实现,而且没有意义