CyclicBarrier(循环栅栏) 是 Java 并发包 () 中的一个非常重要的同步辅助类。它的字面意思是“可循环使用的栅栏”。 简单来说,它的作用是:让一组线程到达一个同步点(栅栏)时被阻塞,直到最后一个线程到达该同步点,栅栏才会打开,所有被阻塞的线程才能继续往下执行。 --- 一、 CyclicBarrier 的工作原理 CyclicBarrier 的底层是基于 和 实现的。 1. 核心属性 (参与者数量):初始化时设定的需要等待的线程总数。 (计数器):当前还需要等待的线程数量。初始值等于 。 (栅栏任务):一个可选的 任务。当所有线程都到达栅栏时(即 时),会优先执行这个任务,然后再唤醒所有等待的线程。 (代):内部类,用于表示当前栅栏的“代”或“轮次”。因为 CyclicBarrier 是可循环使用的,每当栅栏被打破(所有线程通过)并重置后,就会生成新的一代。 2. 工作流程( 方法执行过程) 当一个线程调用 方法时,内部会发生如下过程: 1. 获取锁:线程首先获取 独占锁。 2. 计数器减 1:将 的值减 1。 3. 判断计数器状态: 如果 :说明还有线程没到达...