假设有一个场景:每个线程代表一个跑步运动员,当运动员都准备好后,才一起出发,只要有一个人没有准备好,大家都等待。

public class UseCyclicBarrier {static class Runner implements Runnable {  private CyclicBarrier barrier;  private String name;  public Runner(CyclicBarrier barrier, String name) {  this.barrier = barrier;  this.name = name;  }  @Override  public void run() {  try {  Thread.sleep(1000 * (new Random()).nextInt(5));  System.out.println(name + " 准备OK.");  barrier.await();  } catch (InterruptedException e) {  e.printStackTrace();  } catch (BrokenBarrierException e) {  e.printStackTrace();  }  System.out.println(name + " Go!!");  }  }public static void main(String[] args) throws IOException,  InterruptedException {  CyclicBarrier barrier = new CyclicBarrier(3);  // 3ExecutorService executor =  Executors.newFixedThreadPool(3);  executor.submit(new Thread(new Runner(barrier,  "zhangsan")));  executor.submit(new Thread(new Runner(barrier,  "lisi")));  executor.submit(new Thread(new Runner(barrier,  "wangwu")));  executor.shutdown();  }  }  

java的CyclicBarrier使用相关推荐

  1. java中CyclicBarrier的使用

    文章目录 CyclicBarrier的方法 CyclicBarrier的使用 java中CyclicBarrier的使用 CyclicBarrier是java 5中引入的线程安全的组件.它有一个bar ...

  2. Java并发– CyclicBarrier示例

    Java中的CyclicBarrier是JDK 5中java.util.Concurrent包中引入的同步器,以及其他并发实用程序(如Counting Semaphore , BlockingQueu ...

  3. LeetCode 1115. Print FooBar Alternately--多线程并发问题--Java解法--CyclicBarrier, synchronized, Semaphore 信号量

    此文首发于我的个人博客:zhang0peter的个人博客 LeetCode题解专栏:LeetCode题解 LeetCode 所有题目总结:LeetCode 所有题目总结 题目地址:Print FooB ...

  4. java多线程-CyclicBarrier

    主要成员变量: private final ReentrantLock lock = new ReentrantLock();private final Condition trip = lock.n ...

  5. Java并发编程: CyclicBarrier让多线程齐步走

    以前在<<编写高质量代码-改善Java程序的151个建议>>一书中看到有一节的标题是"CyclicBarrier让多线程齐步走",觉得这标题挺不错的,所以在 ...

  6. java面试题2019 答案

    Java 面试随着时间的改变而改变.在过去的日子里,当你知道 String 和 StringBuilder 的区别(String 类型和 StringBuffer 类型的主要性能区别其实在于 Stri ...

  7. 2017年50道Java线程面试题

    下面是Java线程相关的热门面试题,你可以用它来好好准备面试. 1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编 ...

  8. Java线程面试题 Top 50(转)

    不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题.Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎.大多数待遇丰厚的Java开发职位都要求开发者精通多线程 ...

  9. 【多线程】Java线程面试题 Top 50(转载)

    Java线程面试题 Top 50 原文链接:http://www.importnew.com/12773.html 本文由 ImportNew - 李 广 翻译自 javarevisited.欢迎加入 ...

最新文章

  1. 深度丨AI界的七大未解之谜:OpenAI丢出一组AI研究课题
  2. boost::hana::pair_tag用法的测试程序
  3. 为什么要用MyBatis-JDBC 连接数据库
  4. mysqli 扩展_MySQLi的优势
  5. Java 判断密码是否是大小写字母、数字、特殊字符中的至少三种
  6. SVN更新数据和提交数据的几个疑问
  7. 简单聊聊模型的性能评估标准
  8. 每天2分钟,10个简单方法改变你的生活
  9. 《C++字符串完全指南——第一部分:win32 字符编码》
  10. linux make命令实现,Linux make命令主要参数详解
  11. java第一次上机_java第一次上机实验--验证码
  12. 正点原子操作过程中芯片总是出错
  13. 语音识别行业成长红利期已过,行业寡头显现,小公司生存状况堪忧
  14. 贺利坚老师汇编课程27笔记(二):loop和[bx]访问连续内存单元
  15. 数据结构 周末舞会(循环队列解法)
  16. 6183. 字符串的前缀分数和(每日一难phase2--day18)
  17. 无线打印机服务器安装教程,网络打印服务器怎么安装和使用?
  18. 计算机信函 教案模板,一年级信息技术课教案模板三篇
  19. 智汀如何让绿米Aqara无线开关一键联动不同品牌的智能设备?以智汀窗帘电机、星辰智能台灯为例
  20. 软件产品的增值税税率该如何选择?

热门文章

  1. 特殊空格的坑,原来空格可以有好多种
  2. matlab ltiview应用例子,Matlab控制工具箱(网络软件)
  3. python packages_Python-Packages
  4. python高斯滤波和降噪_高斯滤波原理及python实现
  5. python求三个整数最大值_怎么用python比较三个数大小
  6. cad lisp 两侧偏移并删除_弱电CAD不算CAD?学学操作,将手速发挥极致,让他人刮目相看...
  7. mysql characterencoding 枚举值_mysql中enum类型理解,读完之后,大部分程序员收藏了......
  8. c盘扩展卷是灰色的_技术丨电脑C盘装太满?这几招轻松释放空间
  9. Cluster coefficient的理解
  10. 分布式是什么,集群又是什么呢