线程十六:CyclicBarrier

本文深入讲解了Java并发包中CyclicBarrier类的使用方法及原理,CyclicBarrier是一种同步工具类,可以实现多个线程之间的同步等待。文章详细介绍了CyclicBarrier的构造方法、主要方法及其应用场景,并通过示例代码演示了如何利用CyclicBarrier完成多线程任务的同步。

"同步屏障"指的是一组线程互相等待,直到到达某个公共的屏障点。"同步屏障"通常用在数量固定且在执行过程中需要等待彼此执行的多线程应用中。

CyclicBarrier类实现了同步屏障,可以通过使用构造器CyclicBarrier(int parties)来创建其对象,其中的parties代表拥有共同执行目标的线程数量,也可以通过构造器CyclicBarrier(int parties,Runnable barrierAction)来创建指定任务的同步屏障,其特点是最后一条线程到达屏障点之后会执行barrierAction任务,然后其他线程继续执行。构造器参数的parties如果小于1,构造器会抛出异常,如果把barrierAction设置为null,那么当最后一条线程跨越屏障时不会执行任务。

CyclicBarrier定义了如下的方法:1.await方法会强制调用线程一直等待,直到所有的线程都执行了await方法。2.await(long timeout,TimeUnit unit)与前一个方法的区别是增加了等待的时间,其他功能一样。3.getNumberWaiting方法返回当前在同步屏障上等待的线程数目。4.getParties方法返回要跨越屏障的线程数目。5.reset方法会重置屏障到初始状态,这个方法并不常用。

为了演示同步屏障CyclicBarrier的应用,我们看一个例子:

这个例子是Javadoc文档中给出的示例代码,演示了如何使用3个线程完成一个二维数组的处理过程,当处理结束后把结果打印出来。

参考链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值