作用
让一 组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开放,所有被屏障拦截的线程才会继续运行。
核心方法
- CyclicBarrier(int parties):默认构造方法,parties参数表示屏障拦截的线程数量
- CyclicBarrier(int parties, Runnable barrierAction):barrierAction表示屏障开放的时候会优先执行barrierAction线程,会直接使用最后到达屏障的那个线程来执行barrierAction。
- await():告诉CyclicBarrier我已经到达了屏障,然后当前线程被阻塞,直到所有线程到达屏障后,屏障开放一起执行
- reset():重置计数器
- getNumberWaiting方法可以获得Cyclic-Barrier 阻塞的线程数量
- isBroken()方法用来了解阻塞的线程是否被中断
应用场景
CyclicBarrier可以用于多线程计算数据,最后合并计算结果的场景。
示例
package com.xiaolyuh;import com.alibaba.fastjson.JSON