当前位置: 代码迷 >> 综合 >> CyclicBarrier并发工具类
  详细解决方案

CyclicBarrier并发工具类

热度:103   发布时间:2023-09-05 18:23:28.0

作用

让一 组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开放,所有被屏障拦截的线程才会继续运行。

核心方法

  • 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
  相关解决方案