CountDownLatch
只能用一次。
CountDownLatch countDownLatch = new CountDownLatch(5);
当一组线程调用countDownLatch的await方法时,进入等待。直到其他线程调用完5次countDown方法。
CyclicBarrier
可以循环使用
CyclicBarrier cyclicBarrier = new CyclicBarrier(5);
当5个线程都调用了await方法时,这5个线程同时继续运行,否则继续等待。
Phaser
加强版的CyclicBarrier,可以动态注册注销线程。比如,原来有5个线程,现在可以注销掉一个,或者注册进一个。
Semaphore
控制可以同时访问某个特定资源的线程数量。
Exchange
两个线程间进行数据交换。