- 子线程执行完成才执行主线程
- ThreadJoinTest
- 所有子线程完成了阻塞
count
计数之后就开始调用主线程的latch.await()
之后的方法 - CountDownLatchTest
-
CountDownLatch
和CyclicBarrier
都能够实现线程之间的等待,只不过它们侧重点不同: -
CountDownLatch
一般用于某个线程A等待若干个其他线程执行完任务之后,它才执行; -
而
CyclicBarrier
一般用于一组线程互相等待至某个状态,然后这一组线程再同时执行; -
另外,
CountDownLatch
是不能够重用的,而CyclicBarrier
是可以重用的。
Semaphore
其实和锁有点类似,它一般用于控制对某组资源的访问权限。- 初始化时设置大小, 线程每次获取和存放回去都有数量可选。
- 讲任务分割最后汇集结果,类似排序中的归并