【并发】Semaphore,CountDownlatch,CyclicBarrier ,Exchange,Phaser

Semaphore

  • 翻译成字面意思为 信号量,Semaphore可以控同时访问的线程个数,
  • 通过 acquire() 获取一个或多个许可,如果没有就等待
  • release() 释放一个或者多个许可。

CountDownlatch

  • 必须发生制定的事件数之后才可以继续运行,打开锁存器
  • await(),等待锁存器
  • countDown(),触发事件

CyclicBarrier

  • 适用于多个线程都到达预定点的时候,才可以继续执行
  • CyclicBarrier(int num):等待线程的数量
  • CyclicBarrier (int num,Runnable action):等待线程的数量,及到达之后的操作
  • 每一个线程在其中,await(),当全部await()后,即执行CyclicBarrier 的线程

Exchange

  • 简化两个线程之间的数据交换
  • Exchange
  • V exchange(V data); 等待线程到达,交换数据

Phaser 阶段器

  • 工作方式与CyclicBarrier 类似,不过可以定义多个阶段
  • register();注册一个party
  • arriveAndAwaitAdvance(); //等待参与者达到指定数量,才开始运行下面的代码
  • arriveAndDeregister(); //注销当前线程,该线程就不会进入休眠态,也会从phaser的数量中减少

你可能感兴趣的:(【并发】Semaphore,CountDownlatch,CyclicBarrier ,Exchange,Phaser)