论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
CountDownLatch、CyclicBarrier 使用区别
CountDownLatch、CyclicBarrier 使用区别
耶耶耶耶耶
金牌会员
|
2023-4-4 14:36:17
|
显示全部楼层
|
阅读模式
楼主
主题
945
|
帖子
945
|
积分
2835
主要区别
CountDownLatch:所有子线程完成后,再执行主线程
CyclicBarrier: 所有子线程就绪后,再执行子线程
CountDownLatch
所有子线程完成后,再执行主线程
多线程 ThreadPoolTaskExecutor 应用
SpringBoot 下载文件
CyclicBarrier
有若干个线程,比如说有五个线程,需要它们都到达了某一个点之后才能开始一起执行,也就是说假如其中只有四个线程到达了这个点,还差一个线程没到达,此时这四个线程都会进入等待状态,直到第五个线程也到达了这个点之后,这五个线程才开始一起进行执行状态
所有子线程就绪后,再执行子线程
所有子线程都已经到达屏障之后,此时屏障就会消失,所有子线程继续执行,若存子线程尚未到达屏障,其他到达了屏障的线程都会进行等待
CyclicBarrier对于涉及到固定大小的线程是非常有用的,线程们必须相互等待。该屏障称之为循环屏障,是因为当等待屏障的线程被释放之后,该屏障能循环使用
package com.concurrency2;
import java.util.Random;
import java.util.concurrent.CyclicBarrier;
public class MyTest1 {
public static void main(String[] args) {
CyclicBarrier cyclicBarrier = new CyclicBarrier(3);
for(int i = 0;i < 3;i ++) {
new Thread(() -> {
try {
Thread.sleep((long)(Math.random() * 2000));
int randomInt = new Random().nextInt(500);
System.out.println("hello " + randomInt);
cyclicBarrier.await();
System.out.println("world " + randomInt);
} catch (Exception e) {
e.printStackTrace();
}
}).start();
}
}
}
复制代码
输出
hello 30
hello 471
hello 343
world 343
world 471
world 30
复制代码
重要成员变量
// 可以理解为初始化时 需要阻塞的任务个数
private final int parties;
// 剩余需要等待的任务个数,初始值为parties,直到为0时依次唤醒所有被阻塞的任务线程。
private int count;
// 每次对“栅栏”的主要成员变量进行变更操作,都应该加锁
private final ReentrantLock lock = new ReentrantLock();
// 用于阻塞和唤醒任务线程
private final Condition trip = lock.newCondition();
// 在所有线程被唤醒前,需要执行的一个Runable对应的run方法
private final Runnable barrierCommand;
// 用于表示“栅栏”当前的状态
private Generation generation = new Generation();
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
耶耶耶耶耶
金牌会员
这个人很懒什么都没写!
楼主热帖
为什么你应该停止依赖Jenkins的插件? ...
蜻蜓优化算法(Matlab完整代码实现) ...
集合论第6-8章
axios&spring前后端分离传参规范总结 ...
SQL 教程之 10 个 SQL 操作用于 80% 的 ...
腾讯云多媒体文件处理总结
Python知识点(史上最全)
关于Maven的使用
JVM常用调优配置参数
20220319编译OpenHarmony-v3.1-beta出 ...
标签云
运维
CIO
存储
服务器
浏览过的版块
终端安全
PLM
人工智能
IT职场那些事
快速回复
返回顶部
返回列表