十三、栅栏CyclicBarrier
一、简介
栅栏CyclicBarrier的作用就是等待一组线程都准备好了,然后执行某个任务。这与CountDownLatch很相似。
但是CyclicBarrier和CountDownLatch是有区别的:
1)CyclicBarrier可以复用,你可以调用Reset方法重新初始化;CountDownLatch是一次性的。
2)CyclicBarrier是一组线程相互等待,而CountDownLatch是一个或一组线程等待另外一个或者一组线程。
JDK文档:http://tool.oschina.net/uploads/apidocs/jdk-zh/java/util/concurrent/CyclicBarrier.html
二、示例
import java.util.concurrent.BrokenBarrierException; import java.util.concurrent.CyclicBarrier;public class CyclicBarrierDemo {private static CyclicBarrier barrier = new CyclicBarrier(3, new Runnable() {@Overridepublic void run() {System.out.println("全都到齐了");}});public static void main(String[] args) throws InterruptedException {for (int i = 0; i < 3; i++) {new Thread(() -> {try {barrier.await(); System.out.println("end await");} catch (InterruptedException e) {e.printStackTrace();} catch (BrokenBarrierException e) {e.printStackTrace();}}).start();System.out.println("启动 i=" + i);Thread.sleep(1000);}} }
转载于:https://www.cnblogs.com/lay2017/p/10166460.html
十三、栅栏CyclicBarrier相关推荐
- 闭锁CountDownLatch和栅栏CyclicBarrier之异同举例
为什么80%的码农都做不了架构师?>>> CountDownLatch和CyclicBarrier的主要联系和区别如下: 1.闭锁CountDownLatch做减计数,而栅栏C ...
- 非常有用的并发控制-循环栅栏CyclicBarrier
转载自 非常有用的并发控制-循环栅栏CyclicBarrier 昨天我讲了倒计时器CountDownLatch的应用,它是阻塞线程直到计时器归0的一种等待方式.今天讲的这个循环栅栏CyclicBarr ...
- 信号量semaphore 读写锁ReadWriteLock 倒计时器CountDownLatch 循环栅栏 CyclicBarrier 线程阻塞工具类LockSupport...
信号量semaphore 允许多个线程同时访问 读写锁ReadWriteLock 在频繁的读写耗时中,读之间不阻塞 倒计时器CountDownLatch obj = new Count ...
- java 栅栏_Java 并发工具类(栅栏 CyclicBarrier )
CyclicBarrier适用于这样的情况:你希望创建一组任务,它们并行地执行工作,然后在下一个步骤之前等待,直到所有任务都完成.栅栏和闭锁的关键区别在于,所有线程必须同时到达栅栏位置,才能继续执行. ...
- Java 并发编程之同步工具类栅栏 CyclicBarrier
CyclicBarrier 用来阻塞一组线程,等待线程完成后才开始某件事情. 例如,开启5个线程,每个线程使用await方法开始阻塞,等待5个线程都完成,才开始执行await方法后面的代码. publ ...
- 【高并发】JUC中的循环栅栏CyclicBarrier的6种使用场景
1.概述 转载:添加链接描述 2.CyclicBarrier简介 CyclicBarrier通常称为循环屏障.它和CountDownLatch很相似,都可以使线程先等待然后再执行.不过CountDow ...
- java线程栅栏_Java多线程并发系列之闭锁(Latch)和栅栏(CyclicBarrier)
今天项目上遇到一个多线程任务问题,大概图文描述一下: 1.前端需要及时返回任务状态 2.后台开了一个任务线程去执行具体的业务,业务包括四个部分,四个部分全部完成才算完成 3.业务中某些耗时的或者需要多 ...
- Java并发编程系列学习_CountDownLatch倒计时器CyclicBarrier循环栅栏
一.倒计时器CountDownLatch 在多线程协作完成业务功能时,有时候需要等待其他多个线程完成任务之后,主线程才能继续往下执行业务功能,在这种的业务场景下,通常可以使用Thread类的join方 ...
- Java多线程通信-CyclicBarrier(栅栏)
一.CyclicBarrier(栅栏) 通过闭锁,我们可以启动一组相关的操作.或者等待一组相关的操作结束.闭锁是一次性对象,到达终止状态后将不可用. CyclicBarrier与闭锁类似,能够 ...
最新文章
- macOS安装 cocoapods1.9.1失败Failed to build gem native extension
- Spring Boot 优雅停止服务的几种方法
- IDEA 打可执行jar包(maven项目)
- 揭秘阿里人工智能实验室首款智能音箱——天猫精灵X1
- 涨姿势了,raise...from... 是个什么操作?
- SAP UI5 应用开发教程之六十三 - 基于 OData V4 的本地 Mock Server 实现的深入介绍试读版
- 云服务器开启ftp_用云服务器怎么挂机器人
- java jdk 类加载机制_JDK源码阅读之类加载
- [转]MPlayer快捷键参数设置--系统开销最少的影音播放器
- OpenGL(三)——OpenGL着色器基础
- thinkphp事务处理以及无效时的解决方案(整理)
- 北航、商汤提出的网络二值化新算法 IR-Net,到底好使不?
- python 内存溢出_python之记录一次内存溢出
- .msi文件安装出现2503、2502错误
- 大数乘法(C语言、数组模拟)
- c语言依次调用字符串中的元素,C语言经典题目(某校复试真题)
- 基于OpenCV及Python的数独问题识别与求解(一)图像预处理
- Kaggle Tabular Playground Series - Jan 2022 学习笔记2(使用时间序列的线性回归)
- 去除桌面图标文字阴影的4种方法
- 获取公众号关注页面链接
热门文章
- ubuntu8.04 升级到8.10后,apache2 不能用的解决办法
- 一天变成36小时[转]
- EasySQLMAIL中企业微信的配置方法
- Kubernetes Node Controller源码分析之配置篇
- 【原创】brew 和 brew cask
- lua笔记之userdata
- Java魔法堂:注解用法详解——@SuppressWarnings(转)
- python连接mongodb的库文件pymongo
- iOS 使用NSUserdefault 保存自定义的 对象
- session对象和applicatione对象