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

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. 杜克大学和Facebook联手开发更好的光通信
  2. ListView 空值时的友好提示
  3. yii2 设置的缓存无效,返回false,不存在
  4. cisco 路由器访问权限的设置
  5. 13 个应该记住的最不寻常的搜索引擎
  6. Android 为应用添加默认加载页
  7. Docker技术入门与实战
  8. web Server支持 perl
  9. 蒲公英如何正确泡水喝?可以和哪些食物一起搭配?
  10. Jmter接口测试二
  11. EPM连接显示服务器不可用,EPM问题汇总之-SmartView无法连接Essbase
  12. 手机运作html实现弹窗,html5实现手机弹窗留言对话框(摘)
  13. java遍历二级城市_java8用Lambda遍历省市区三级数据
  14. Ugly Windows UVA - 1419
  15. 2018.4.3晚_京东实习_后端开发面试记录
  16. 对 IIC 总线的理解、调用函数以及常见面试问题
  17. 【重磅盘点】62种PCB板不良实例的原因分析及规避措施!必收藏干货!
  18. 多项式polynomial 考试 解题报告
  19. 学校网站建设解决方案_学校网站建设方案怎么写
  20. Python基础-类变量和实例变量

热门文章

  1. chrome设置微信ua_Chrome谷歌浏览器模拟微信内置浏览器的方法(电脑上)
  2. 七边形简单画法步骤图_零基础国画教程:分步骤图解教你画3种常见树画法,简单易学...
  3. 基于java的学生点名系统_基于javafx的学生电子点名系统(在eclipse中编写完成)...
  4. python合法关键字是_python练习题-day18
  5. beanutils工具类_Apache Commons 工具类介绍及简单使用
  6. android 消息循环滚动条,Android ViewPager实现循环滚动
  7. fprintf函数的用法_MATLAB的21种特殊符号,总有一种你不知道的用法
  8. grep搜索带有特殊符号的规律
  9. xgboost每次迭代取得最优值方法
  10. 环境变量空格符号带来的坑