栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 线程并发 常用辅助类 (二) Cyclicbarrier

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 线程并发 常用辅助类 (二) Cyclicbarrier

定义介绍:允许一组线程全部等待彼此达到共同屏障点的同步辅助。循环阻塞在涉及固定大小的线程方的程序中很有用,这些线程必须偶尔等待彼此。屏障被称为循环 ,因为它可以在等待的线程被释放之后重新使用。

A CyclicBarrier支持一个可选的Runnable命令,每个屏障点运行一次,在派对中的最后一个线程到达之后,但在任何线程释放之前。 在任何一方继续进行之前,此屏障操作对更新共享状态很有用。

构造方法:

构造方法
Constructor and Description
CyclicBarrier(int parties)

创建一个新的 CyclicBarrier ,当给定数量的线程(线程)等待它时,它将跳闸,并且当屏障跳闸时不执行预定义的动作。

CyclicBarrier(int parties, Runnable barrierAction)

创建一个新的 CyclicBarrier ,当给定数量的线程(线程)等待时,它将跳闸,当屏障跳闸时执行给定的屏障动作,由最后一个进入屏障的线程执行。

所有方法接口方法具体的方法

Modifier and TypeMethod and Description
intawait()

等待所有 parties已经在这个障碍上调用了 await 。

intawait(long timeout, TimeUnit unit)

等待所有 parties已经在此屏障上调用 await ,或指定的等待时间过去。

intgetNumberWaiting()

返回目前正在等待障碍的各方的数量。

intgetParties()

返回旅行这个障碍所需的聚会数量。

booleanisBroken()

查询这个障碍是否处于破碎状态。

voidreset()

将屏障重置为初始状态。

代码示例:

 @Test
    public void test01(){
        CyclicBarrier cyclicBarrier=new CyclicBarrier(7,()->{
            System.out.println("召集龙珠"); //等到cyclicBarrier 七次时候执行


        });

        for(int i=1;i<8;i++) {
            final int tmp=i;
            new Thread(() -> {
                System.out.println("第"+tmp+"颗龙珠");


                try {
                    TimeUnit.SECONDS.sleep(2);
                    cyclicBarrier.await();


                } catch (InterruptedException e) {
                    e.printStackTrace();
                } catch (BrokenBarrierException e) {
                    e.printStackTrace();
                }
            }).start();
        }
        System.out.println("等待的数量1:"+cyclicBarrier.getNumberWaiting());

        System.out.println("状态1:"+  cyclicBarrier.isBroken());
       
    }

CyclicBarrier 与 CountDownLatch 区别 很明显 ,一个是倒减 ,倒减完后可以再往下执行,另一个是阻塞,阻塞到一定限制再一起执行,另外CyclicBarrier 可以重置,而CountDownLatch 不可以。

接下来:Semaphore 辅助类

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/489536.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号