一、简介

栅栏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相关推荐

  1. 闭锁CountDownLatch和栅栏CyclicBarrier之异同举例

    为什么80%的码农都做不了架构师?>>>    CountDownLatch和CyclicBarrier的主要联系和区别如下: 1.闭锁CountDownLatch做减计数,而栅栏C ...

  2. 非常有用的并发控制-循环栅栏CyclicBarrier

    转载自 非常有用的并发控制-循环栅栏CyclicBarrier 昨天我讲了倒计时器CountDownLatch的应用,它是阻塞线程直到计时器归0的一种等待方式.今天讲的这个循环栅栏CyclicBarr ...

  3. 信号量semaphore 读写锁ReadWriteLock 倒计时器CountDownLatch 循环栅栏 CyclicBarrier 线程阻塞工具类LockSupport...

    信号量semaphore    允许多个线程同时访问 读写锁ReadWriteLock   在频繁的读写耗时中,读之间不阻塞 倒计时器CountDownLatch    obj = new Count ...

  4. java 栅栏_Java 并发工具类(栅栏 CyclicBarrier )

    CyclicBarrier适用于这样的情况:你希望创建一组任务,它们并行地执行工作,然后在下一个步骤之前等待,直到所有任务都完成.栅栏和闭锁的关键区别在于,所有线程必须同时到达栅栏位置,才能继续执行. ...

  5. Java 并发编程之同步工具类栅栏 CyclicBarrier

    CyclicBarrier 用来阻塞一组线程,等待线程完成后才开始某件事情. 例如,开启5个线程,每个线程使用await方法开始阻塞,等待5个线程都完成,才开始执行await方法后面的代码. publ ...

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

    1.概述 转载:添加链接描述 2.CyclicBarrier简介 CyclicBarrier通常称为循环屏障.它和CountDownLatch很相似,都可以使线程先等待然后再执行.不过CountDow ...

  7. java线程栅栏_Java多线程并发系列之闭锁(Latch)和栅栏(CyclicBarrier)

    今天项目上遇到一个多线程任务问题,大概图文描述一下: 1.前端需要及时返回任务状态 2.后台开了一个任务线程去执行具体的业务,业务包括四个部分,四个部分全部完成才算完成 3.业务中某些耗时的或者需要多 ...

  8. Java并发编程系列学习_CountDownLatch倒计时器CyclicBarrier循环栅栏

    一.倒计时器CountDownLatch 在多线程协作完成业务功能时,有时候需要等待其他多个线程完成任务之后,主线程才能继续往下执行业务功能,在这种的业务场景下,通常可以使用Thread类的join方 ...

  9. Java多线程通信-CyclicBarrier(栅栏)

    一.CyclicBarrier(栅栏) 通过闭锁,我们可以启动一组相关的操作.或者等待一组相关的操作结束.闭锁是一次性对象,到达终止状态后将不可用.     CyclicBarrier与闭锁类似,能够 ...

最新文章

  1. macOS安装 cocoapods1.9.1失败Failed to build gem native extension
  2. Spring Boot 优雅停止服务的几种方法
  3. IDEA 打可执行jar包(maven项目)
  4. 揭秘阿里人工智能实验室首款智能音箱——天猫精灵X1
  5. 涨姿势了,raise...from... 是个什么操作?
  6. SAP UI5 应用开发教程之六十三 - 基于 OData V4 的本地 Mock Server 实现的深入介绍试读版
  7. 云服务器开启ftp_用云服务器怎么挂机器人
  8. java jdk 类加载机制_JDK源码阅读之类加载
  9. [转]MPlayer快捷键参数设置--系统开销最少的影音播放器
  10. OpenGL(三)——OpenGL着色器基础
  11. thinkphp事务处理以及无效时的解决方案(整理)
  12. 北航、商汤提出的网络二值化新算法 IR-Net,到底好使不?
  13. python 内存溢出_python之记录一次内存溢出
  14. .msi文件安装出现2503、2502错误
  15. 大数乘法(C语言、数组模拟)
  16. c语言依次调用字符串中的元素,C语言经典题目(某校复试真题)
  17. 基于OpenCV及Python的数独问题识别与求解(一)图像预处理
  18. Kaggle Tabular Playground Series - Jan 2022 学习笔记2(使用时间序列的线性回归)
  19. 去除桌面图标文字阴影的4种方法
  20. 获取公众号关注页面链接

热门文章

  1. ubuntu8.04 升级到8.10后,apache2 不能用的解决办法
  2. 一天变成36小时[转]
  3. EasySQLMAIL中企业微信的配置方法
  4. Kubernetes Node Controller源码分析之配置篇
  5. 【原创】brew 和 brew cask
  6. lua笔记之userdata
  7. Java魔法堂:注解用法详解——@SuppressWarnings(转)
  8. python连接mongodb的库文件pymongo
  9. iOS 使用NSUserdefault 保存自定义的 对象
  10. session对象和applicatione对象