Java多线程之并发工具类之CyclicBarrier

来源:互联网 发布:易通网络加速器官网 编辑:程序博客网 时间:2024/06/05 08:20

一、什么叫CyclicBarrier?

1.字面意思:可循环使用的屏障。
2.主要做的事情:让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障;屏障才会开门,所有被屏障拦截的线程才会继续进行。

二、CyclicBarrier类API

构造器

CyclicBarrier(int parties) 创建CyclicBarrier对象,parties 表示屏障拦截的线程数量。

CyclicBarrier(int parties, Runnable barrierAction) 创建 CyclicBarrier对象,该构造方法提供了一个Runnable 参数,在一组线程中的最后一个线程到达之后,执行Runnable中的程序,再之后释放正在等待的线程。Runnable在屏障点上只运行一次。

方法

int await() 通知CyclicBarrier实例,当前线程已经到达屏障点,然后当前线程将被阻塞。

int await(long timeout, TimeUnit unit) 指定当前线程被阻塞的时间。

int getNumberWaiting() 返回当前在屏障处等待的线程数。

int getParties() 返回CyclicBarrier的需要拦截的线程数。

boolean isBroken() 查询此屏障是否处于损坏状态。

void reset() 将屏障重置为其初始状态。

0 0