Semaphore
- 翻译成字面意思为 信号量,Semaphore可以控同时访问的线程个数,
- 通过 acquire() 获取一个或多个许可,如果没有就等待
- release() 释放一个或者多个许可。
CountDownlatch
- 必须发生制定的事件数之后才可以继续运行,打开锁存器
- await(),等待锁存器
- countDown(),触发事件
CyclicBarrier
- 适用于多个线程都到达预定点的时候,才可以继续执行
- CyclicBarrier(int num):等待线程的数量
- CyclicBarrier (int num,Runnable action):等待线程的数量,及到达之后的操作
- 每一个线程在其中,await(),当全部await()后,即执行CyclicBarrier 的线程
Exchange
- 简化两个线程之间的数据交换
- Exchange<V>
- V exchange(V data); 等待线程到达,交换数据
Phaser 阶段器
- 工作方式与CyclicBarrier 类似,不过可以定义多个阶段
- register();注册一个party
- arriveAndAwaitAdvance(); //等待参与者达到指定数量,才开始运行下面的代码
- arriveAndDeregister(); //注销当前线程,该线程就不会进入休眠态,也会从phaser的数量中减少