1.定义

CyclicBarrier的字面意思就是可循环(Cyclic)使用的屏障(Barrier)。它要求做的事情是,让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续干活,线程进入屏障通过CyclicBarrier的await方法。

CyclicBarrier与CountDownLatch的区别:CyclicBarrier可重复多次,而CountDownLatch只能是一次。
2.程序演示集齐7个龙珠,召唤神龙

复制代码
package com.mydemo;

import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;

public class SummonTheDragonDemo {
    public static void main(String[] args) {
        CyclicBarrier cyclicBarrier=new CyclicBarrier(7,()->{

            System.out.println("召唤神龙!");
        });

        for (int i = 0; i < 7; i++) {
            final  int i1=i;
            new Thread(()->{
                System.out.println("收集到第"+i1+" 颗龙珠");
                try {
                    cyclicBarrier.await();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                } catch (BrokenBarrierException e) {
                    e.printStackTrace();
                }
            },String.valueOf(i1)).start();
        }

    }
}
复制代码

3.执行结果

收集到第0 颗龙珠
收集到第1 颗龙珠
收集到第2 颗龙珠
收集到第3 颗龙珠
收集到第4 颗龙珠
收集到第5 颗龙珠
收集到第6 颗龙珠
召唤神龙!

 

posted on   upupup-999  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?



点击右上角即可分享
微信分享提示