深入理解JUC:第五章:CyclicBarrier循环栅栏

简介: 深入理解JUC:第五章:CyclicBarrier循环栅栏

理论:


它的作用就是会让所有线程都等待完成后才会继续下一步行动。

举个例子,就像生活中我们会约朋友们到某个餐厅一起吃饭,有些朋友可能会早到,有些朋友可能会晚到,但是这个餐厅规定必须等到所有人到齐之后才会让我们进去。这里的朋友们就是各个线程,餐厅就是 CyclicBarrier

未使用循环栅栏的代码:

public class Demo {
    public static void main(String[] args) throws Exception{
        for (int i = 1; i <= 6; i++) {
            final int tempInt = i;
            new Thread(()->{
                System.out.println(tempInt+"朋友到了");
            },String.valueOf(i)).start();
        }
        System.out.println("朋友全部到了,才开始吃饭");
    }
}

控制台:

使用CyclicBarrier的代码:

import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;
public class Demo {
    public static void main(String[] args) throws Exception{
        CyclicBarrier cyclicBarrier = new CyclicBarrier(6,()->{System.out.println("朋友全部到了,才开始吃饭");});
        for (int i = 1; i <= 6; i++) {
            final int tempInt = i;
            new Thread(()->{
                System.out.println(tempInt+"朋友到了");
                try {
                    cyclicBarrier.await();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                } catch (BrokenBarrierException e) {
                    e.printStackTrace();
                }
            },String.valueOf(i)).start();
        }
    }
}

控制台:

相关文章
|
8月前
|
机器学习/深度学习 人工智能 算法
普通人怎么学人工智能?这些隐藏学习秘籍大揭秘,生成式人工智能认证(GAI认证)来助力
在人工智能(AI)快速发展的今天,普通人学习AI已成为必然趋势。本文从明确学习目标与路径、利用多元化资源、注重实践应用、关注GAI认证及持续自我提升五个方面,为普通人提供系统化的AI学习指南。通过设定目标、学习编程语言、参与项目实践和获取专业认证,普通人可逐步掌握AI技能,在未来职场中占据优势并开启智能时代新篇章。
|
12月前
|
数据可视化 关系型数据库 MySQL
阿里云开发者社区12月更文特别活动分享:🌍PolarDB、🧹OS Copilot和🧰云效Flow深度体验
本文深入探讨了阿里云的三款核心产品:PolarDB MySQL、OS Copilot和云效Flow,分别聚焦于云数据库、系统运维和DevOps流程管理的功能、表现及优化建议。通过多场景评测与实验,展示了这些产品在提高效率、简化操作和增强系统稳定性方面的显著优势。
|
存储 Shell 开发工具
Flutter&鸿蒙next 中使用 MobX 进行状态管理
本文介绍了如何在 Flutter 中使用 MobX 进行状态管理。MobX 是一个基于观察者模式的响应式编程库,通过 `@observable` 和 `@action` 注解管理状态,并使用 `Observer` 小部件自动更新 UI。文章详细讲解了 MobX 的核心概念、如何集成到 Flutter 项目中以及具体的代码示例。适合希望在 Flutter 应用中实现高效状态管理的开发者阅读。
327 9
|
12月前
|
Shell 开发工具 Python
如何在vim里直接运行python程序
如何在vim里直接运行python程序
|
边缘计算 5G 网络安全
C-RAN:集中式无线接入网,赋能 5G 时代
C-RAN:集中式无线接入网,赋能 5G 时代
516 1
|
数据采集 网络协议 开发工具
嵌入式控制器应用程序开发
嵌入式控制器应用程序开发
|
索引
ENVI_IDL: 如何读取HDF5文件再优美地做个均值处理?(以OMI数据为例)
ENVI_IDL: 如何读取HDF5文件再优美地做个均值处理?(以OMI数据为例)
508 0
|
机器学习/深度学习
迁移学习域自适应性 - 李宏毅笔记
迁移学习域自适应性 - 李宏毅笔记
789 0
|
存储 网络协议 算法
【计算机网络基础 五】运输层(下)
【计算机网络基础 五】运输层(下)
475 0
|
新零售 人工智能 供应链
东郊到家系统开发(规则及玩法)/方案详解/案例设计/成熟技术,东郊到家APP开发源码
 新零售就是企业借助互联网,通过大数据、人工智能等一些手段,对产品的生产、流通以及销售的过程俩进行升级改造,从而可以把线上服务、线下服务以及现代的物流进行深度的融合的新零售模式。

热门文章

最新文章