源码:java.util.concurrent.CyclicBarrier 源码解析

1. TODO


2. 脑图

  1. Xmind

  2. Edraw

  3. Hexo 地址
    👉 http://blog.wangjia.ink/2025/11/19/源码:java.util.concurrent.CyclicBarrier源码解析/


3. 基础部分

3.1. CyclicBarrier 概述

CyclicBarrier 是一个具体类

循环栅栏(CyclicBarrier)可以简单的理解为 CountDownLatch 的一个变种。我们使用 CountDownLatch 实现汇总模式(主线程等待、子线程减数)、发令枪模式(子线程等待,主线程减数)时,会发现它们总是需要另一方来触发减数,像是缺少一个 “点火” 键

CyclicBarrier 是参与线程既减数,也等待。假设需要 10 个线程到达同步点,前 9 个线程在到达同步点后,都会减数然后等待,此时计数从 10 ➔ 1。当最后一个线程到达同步点时,也会减数然后等待,此时计数从 1 ➔ 0,所有线程同时继续向下执行。整个过程不需要额外的 “点火” 键,实现了 “线程互相等待”

[!NOTE] 注意事项

  1. CountDownLatch 是使用 AQS 实现的,而 CyclicBarrier 是使用 ReentrantLock 实现的
  2. CountDownLatch 是一次性的,而 CyclicBarrier 是可重复使用的
  3. 简单理解 CountDownLatchCyclicBarrierSemaphore
    1. CountDownLatch 是门闩开启才能继续执行
    2. CyclicBarrier 是 “互相等待” 都准备好才能继续执行
    3. Semaphore 是拿到 “许可证” 才能继续执行

3.2. CyclicBarrier 应用场景

3.2.1. 并发压力测试



源码:java.util.concurrent.CyclicBarrier 源码解析
https://wangjia5289.github.io/2025/11/19/源码:java.util.concurrent.CyclicBarrier源码解析/
Author
咸阳猴🐒
Posted on
November 19, 2025
Licensed under