JUC学习笔记(8)—CyclicBarrier

【JUC】循环屏障CyclicBarrier详解 jdk中提供了许多的并发工具类,大家可能比较熟悉的有,主要用来阻塞一个线程运行,直到其他线程运行完毕。而jdk还有一个功能类似并发工具类,你知道它的作用吗?和有什么区别呢?对于CountDownLatch不了解的可以参考# CountDownLatch源码硬核解析,循环屏障,用来进行线程协作,让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,会触发自己运行,运行完后,屏障又会开门,所有被屏障拦截的线程又可以继续运行。所以是可以重用的。 阅读详情

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

 

public class CyclicBarrierDemo
{
	private static final int NUMBER = 7;
	
	public static void main(String[] args)
	{
		//CyclicBarrier(int parties, Runnable barrierAction) 
		CyclicBarrier cb = new CyclicBarrier(NUMBER, () -> { System.out.println("******召唤神龙");} ) ;
		
		for (int i = 1; i <=NUMBER; i++) 
		{
			int tempInt = i;
			new Thread(() -> {
				try {
					System.out.println(Thread.currentThread().getName()+"\t 收集到第:"+tempInt+"\t 龙珠");
					cb.await();
				} catch (InterruptedException | BrokenBarrierException e) {
					e.printStackTrace();
				}
			}, String.valueOf(i)).start();
		}
		
	}
}

 

JUC学习 - 循环栅栏CyclicBarrier 一、JUC中的循环栅栏CyclicBarrier 1、CyclicBarrier简介 CyclicBarrier通常称为循环屏障。它和CountDownLatch很相似,都可以使线程先等待然后再执行。不过CountDownLatch是使一批线程等待另一批线程执行完后再执行;而CyclicBarrier只是使等待的线程达到一定数目后再让它们继续执行。故而CyclicBarrier内部也有一个计数器,计数器的初始值在创建对象时通过构造参数指定,如下所示: public CyclicBarrier(int par 阅读详情

相关推荐

【高并发】JUC中的循环栅栏CyclicBarrier的6种使用场景

JUC中的循环栅栏CyclicBarrier的6种使用场景。 CyclicBarrier通常称为循环屏障。它和CountDownLatch很相似,都可以使线程先等待然后再执行。不过CountDownLatch是使一批线程等待另一批线程执行完后再执行;而CyclicBarrier只是使等待的线程达到一定数目后再让它们继续执行。故而CyclicBarrier内部也有一个计数器,计数器的初始值在创建对象时通过构造参数指定,如下所示: 。除此之外,CyclicB

九师兄 6574

JUC并发工具包之CyclicBarrier

1、简介 CyclicBarrier是一个同步器,允许多个线程等待彼此直到达一个执行点(barrier)。 CyclicBarrier都是在多个线程必须等到彼此都到达同一个执行点后才执行一段逻辑时才被使用。 barrier被叫做cyclic是因为阻塞线程恢复后可以重复使用barrier 2、使用 CyclicBarrier的构造器很简单,传入一个整形表示线程数再调用barrier实例的await()方法表示所有线程要到达这一共同的执行点。 public CyclicBarrier(int parties

靖哥哥的博客 1722

如何从零开始写小程序

看了这篇文章,即使让我现在就从头写一个能够正常运行的小程序,也没有原本想象中的那么难了。 在本文中,我们将会以一个具体的小程序为例,带领大家从零到一完成一个小程序的开发流程,并将这个小程序上传到 FinClip.com 进行小程序提审与上架操作。 我们新建了一个叫做「HelloWorld」的小程序,FIDE 在初始化小程序项目时,会自动在项目目录中补充对应所需要的项目文件。那不妨让我们先从小程序目录下的配置文件开始,逐渐揭开小程序的面纱。 使用 FIDE 编辑小程序 1. 认识 json 文件 在小程序项目

POHOU23的博客 4396

JUC-并发工具(CountDownLatch\CycleBarrier\Semaphore)

一、简介 CountDownLatch(闭锁)、Semaphore(信号量)、CycleBarrier(栏栅) 二、解析 CountDownLatch一般称为闭锁,某一个线程等待其他线程完成后,再继续往下执行的场景下,可以使用此工具。首先创建CountDownLatch的一个实例对象,指定等待锁数量k,一般等于剩余等待的线程数量,然后等待线程执行await()方法阻塞等待,其他线程执行cou...

l_dongyang的博客 791

工业场景落地:Java+PaddleOCR实现高性能OCR文字识别的终极方案

本文深度解析基于Java的高性能工业级OCR实现方案,集成PP-OCRv5深度学习模型,提供: ✅ 多场景支持:手写体、竖排文本、票据表格的精准识别 ✅ 工业级性能:毫秒级响应,支持GPU加速与高并发处理 ✅ 开箱即用:通过Maven快速集成,5行代码完成文字识别 ✅ 完整技术栈:覆盖文本检测、方向校正、识别后处理全流程 附可运行示例代码,助您快速构建企业级OCR系统!

deng775747758的博客 3612

论文阅读:Visual Relationship Detection with Language Priors

Visual Relationship Detection with Language Priors(ECCV2016) 文章   尽管大多数的relationship并不常见,但是它们的object和predicate却更频繁地独立出现。paper用这个insight分别独立训练训练object和predicate的模型,然后再进行组合来预测relationship。Visual relatio...

Kivee的博客 2877

JUC工具类: CyclicBarrier详解

对于CountDownLatch,其他线程为游戏玩家,比如英雄联盟,主线程为控制游戏开始的线程。在所有的玩家都准备好之前,主线程是处于等待状态的,也就是游戏不能开始。当所有的玩家准备好之后,下一步的动作实施者为主线程,即开始游戏。对于CyclicBarrier,假设有一家公司要全体员工进行团建活动,活动内容为翻越三个障碍物,每一个人翻越障碍物所用的时间是不一样的。但是公司要求所有人在翻越当前障碍物之后再开始翻越下一个障碍物,也就是所有人翻越第一个障碍物之后,才开始翻越第二个,以此类推。

珍惜当下 1062

CANOe实战指南 - 从入门到精通的全流程解析

本文是CANOe实战指南,全面解析从入门到精通的全流程。内容涵盖CANOe软件的核心功能仿真、测试与分析,详细指导安装配置、工程创建、CAN信号收发、UDS诊断通信、CAPL自动化编程以及Panel面板设计。通过实战案例,帮助汽车电子工程师快速掌握这一行业标杆工具,构建自动化测试环境,提升开发与测试效率。

pear55的博客 574

JUC并发工具类--CyclicBarrier(回环栅栏或循环屏障)

JUC并发工具类--CyclicBarrier(回环栅栏或循环屏障)

qq_41139119的博客 331

Debian下Rust环境极速安装指南:国内镜像+避坑配置(附清华/中科大源对比)

本文详细介绍了在Debian系统上快速安装和配置Rust开发环境的完整指南。针对国内网络环境,重点对比评测了清华大学、中国科学技术大学等主流镜像源,提供了详细的安装配置步骤、Cargo优化技巧以及常见问题排查方案,帮助开发者显著提升依赖下载和编译效率。

s8t9u0v1w的博客 1162

BUCK降压电路设计实战:从理论到PCB的完整指南

本文详细介绍了BUCK降压电路的设计实战,从基础原理到PCB布局的完整指南。通过关键部件选型、PCB布局黄金法则和调试技巧,帮助工程师高效设计稳定可靠的开关电源。特别针对电感、MOSFET和电容选型提供实用公式和避坑指南,并分享高温环境下的工程经验与测试方法。

weixin_33744141的博客 453

JUC周阳视频笔记

JUC周阳视频笔记 这是自己一点一点整理的笔记,有空了一直完善,希望对大家有帮助。 视频地址:https://www.bilibili.com/video/BV1vE411D7KE?p=38 JUC的内容可以从p38-p72开始观看 p47-p48 8锁的现象及解释 8锁的原理可以从问题入手 标准访问,请间先打印邮件还是短信? 邮件方法暂停4秒钟,清问先打印邮件还是短信? 新增一个普通方法hello(), 请问先打印邮件还是hello ? 两部手机,请间先打印邮件还是短信? 两个静态同步方法,同一

weixin_42861874的博客 716

i茅台最新任务python脚本

从固定的 `header_context` 生成HTTP请求头,并加入用户的`userId`、`MT-Token`等动态信息,以模仿真实的请求。- 发送预约请求,提交商品和门店的参数,如 `sessionId`、`shopId`、`itemId` 等。- 定时任务:通过 `cron` 表达式 `0 0 9/21 * * *`,表示每月的9日和21日的0点执行。- `login`:使用验证码进行登录,并返回 `token` 和 `userId`。- 获取北京时间当天0点的时间戳,作为预约请求的时间参数。

三维点云技术探索 983

JUC并发编程

JUC并发编程 JUC简介 进程、线程的关系 Java默认有两个线程 线程的六种状态 并发、并行的关系: Lock锁 Synchronized 和 Lock的区别 8锁现象 问题一 : 在标准情况下,两个线程先打印 发短信 还是 打电话 ? 问题二 : 在发短信方法中,延迟4秒,两个线程先打印 发短信 还是 打电话? 问题三 : Phone类增加一个普通方法,线程B调用,那么两个线程先打印 发短信

识时务者的个人博客 14万+

如何完全卸载axure软件以及解决安装axure后打不开的问题【2023年】

如何完全卸载axure软件以及解决安装axure后打不开的问题【2023年】

念兮为美 5139

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

聊聊 JUC 下的 CountDownLatch、CyclicBarrier、Phaser 和 Semaphore

聊聊 JUC 下的 CountDownLatch、CyclicBarrier、Phaser 和 Semaphore

lybugproducer的博客 1131

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

JUC并发工具-CountDownLatch、Semaphore、CyclicBarrier

本文分析了Java并发编程中的三个核心同步工具类:CountDownLatch、Semaphore和CyclicBarrier的实现原理。CountDownLatch基于AQS共享锁实现,通过countDown()递减计数器,await()阻塞直到计数器归零;Semaphore通过AQS管理有限资源,acquire()获取资源,release()释放资源;CyclicBarrier使用ReentrantLock和Condition实现可复用的线程屏障,await()会阻塞直到所有线程到达屏障点。三者都通过C

qq_74092815的博客 1121

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

CyclicBarrier 使用案例详解

CyclicBarrier 概念: CyclicBarrier 字面意思是环栅栏,是 JUC 下的一个并发工具,跟 CountDownLatch 很相似,都可以使线程先等待然后再执行,但是它的功能比 CountDownLatch 更加复杂和强大, CountDownLatch 是一个或者多个线程等待另外一批线程执行完毕后,在接着执行,而 CyclicBarrier 是等待一批线程到达某个状态之后再同时开始执行,回环的意思是当所有的线程被释放后,CyclicBarrier 可以被重启,也就是可以重复使用

weixin_42118323的博客 4586

JUC 工具类大全:CountDownLatch、Semaphore、CyclicBarrier 有何区别?

摘要:本文深入解析Java并发编程中CountDownLatch、Semaphore和CyclicBarrier三大同步工具。CountDownLatch用于主线程等待子任务完成,基于AQS实现一次性计数;Semaphore通过许可机制控制并发线程数,支持公平/非公平策略;CyclicBarrier实现多线程阶段性同步,支持循环使用和回调机制。文章从源码层面对比三者的实现原理,分析适用场景,并给出使用建议:CountDownLatch适合任务完成通知,Semaphore用于限流,CyclicBarrier适

小健学Java的博客 1747

深入解析 JUC 并发编程:CountDownLatch 与 CyclicBarrier 的原理、应用与最佳实践

在Java开发中,并发编程是提升程序性能、优化资源利用的核心技术之一。Java提供了强大的并发工具库,JUC(Java Util Concurrent)便是其中的精髓所在。JUC不仅包含了线程池、锁等基础组件,还为开发者提供了一系列同步工具类,方便实现线程间的协调与管理。是 Java 并发包(JUC)中的一个线程同步工具类,其核心功能是允许一个或多个线程等待,直到其他线程执行完成。它通过一个递减计数器(count)来实现同步机制,初始值由用户设定,每当一个线程调用方法时,计数器减 1。

hello.reader 1408

【并发编程】JUC并发编程(彻底搞懂JUC)

JUC实际上就是我们对于jdk中java.util .concurrent 工具包的简称,其结构如下:这个包下都是Java处理线程相关的类,自jdk1.5后出现。目的就是为了更好的支持高并发任务。让开发者进行多线程编程时减少竞争条件和死锁的问题!JUC主要是指JDK8中java.util.concurrent里提供的一系列线程并发工具,但是线程并发的问题远不止几个工具这么简单。要学习工具使用,更要能深入理解工具的原理以及处理线程并发问题的思路。

DreamSun的博客 7613

JUC框架 CyclicBarrier源码解析 JDK8

CyclicBarrier类似于CountDownLatch但又不同,在CyclicBarrier里,每个线程既要CountDown减小计数器,也要阻塞等待直到count为0(即等待线程到齐)。 CyclicBarrier基于独占锁和条件队列而实现。 CyclicBarrier可以重复使用,每有parties个线程到达barrier,开启新的一代。然后旧的一代线程就会相继从CyclicBarrier#await退出。 CyclicBarrier实现了all-or-none breakage model的原则

anlian523的博客 1032

JUC工具类-CyclicBarrier

集合等待:允许一定数量的线程在达到屏障时互相等待,直到所有线程到达指定点。屏障触发:当所有线程都达到屏障时,屏障“开启”,所有线程同时被唤醒继续执行。触发动作:可选的屏障动作(barrierAction),用于在所有线程到达后执行特定的逻辑,如合并计算结果或状态更新。循环可重用:在所有线程通过屏障后,自动重置计数器,支持多次使用。简单地说,CyclicBarrier 就像“远足团队的集合点”,所有线程(团队成员)到达后,等待人员数量达到约定值后一起出发,而这一集合过程可以在整个任务中不断重复使用。

左灯右行的爱情 1203

JUC包下CyclicBarrier学习笔记

JUC包下CyclicBarrier学习笔记 CyclicBarrier,一个同步辅助类,在API中是这么介绍的: 它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待...

maxchenBug的博客 308

JUC之CyclicBarrier

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

ABU_MOlI_ITUI的博客 5174
上一篇: JUC学习笔记(7)—CountDownLatch
下一篇: JUC学习笔记(9)—Semaphore
木木那年
博客等级 码龄12年 37粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值