import java.io.IOException;
import java.util.Random;
import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; public class R { public static void main(String[] args) throws IOException, InterruptedException {
//如果将参数改为4,但是下面只加入了3个选手,这永远等待下去
//Waits until all parties have invoked await on this barrier.
CyclicBarrier barrier = new CyclicBarrier(); ExecutorService executor = Executors.newFixedThreadPool();
executor.submit(new Thread(new Runner(barrier, "1号选手")));
executor.submit(new Thread(new Runner(barrier, "2号选手")));
executor.submit(new Thread(new Runner(barrier, "3号选手"))); executor.shutdown();
}
} class Runner implements Runnable {
// 一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)
private CyclicBarrier barrier; private String name; public Runner(CyclicBarrier barrier, String name) {
super();
this.barrier = barrier;
this.name = name;
} @Override
public void run() {
try {
Thread.sleep( * (new Random()).nextInt());
System.out.println(name + " 准备好了..."); //
// barrier的await方法,在所有参与者都已经在此 barrier 上调用 await 方法之前,将一直等待。
//barrier.await(); 关闭此处,所有线程各自执行会不影响 //让barrier中所有线程 做完 barrier.await()之前的任务,
//比如 "System.out.println(name + " 准备好了..."); " 然后才继续下面的任务
barrier.await(); } catch (InterruptedException e) {
e.printStackTrace();
} catch (BrokenBarrierException e) {
e.printStackTrace();
}
System.out.println(name + " 起跑!");
}
}

最新文章

  1. Android获取位置信息的方法总结
  2. java集合中的传值和传引用
  3. 页面超慢,zabbix却没报警
  4. Thinking in Java——笔记(5)
  5. 【译】 AWK教程指南 11递归程序
  6. nyoj 1237 最大岛屿(dfs)
  7. vertical-align属性详解
  8. 如何让vim像IDE一样一键放大缩小字号?
  9. Robot Framework学习笔记(九)------创建资源和用户关键字
  10. 一 期末架构1 centos7 简介
  11. IAR Embedded Workbench for ARM 8.22.1 基础使用教程
  12. git关联了无用的,取消关联,并重置gitignore
  13. Spring Boot配置文件详解
  14. 深入浅出Windows命令——telnet
  15. svn命令行创建和删除分支和tags
  16. TCC : Tiny C Compiler (2018-2-6)
  17. HDU4627
  18. Android 给app加入百度地图
  19. Linux VFS机制简析(一)
  20. 漫谈 Clustering (4): Spectral Clustering<转载>

热门文章

  1. Android利用调试器调试程序
  2. php 批量生成html、txt文件
  3. HTML-a
  4. webkit浏览器渲染影响因素分析
  5. 微信公众平台开发:Web App开发入门
  6. [Unity2D]脚本的使用规则
  7. log4j与commons-logging,slf4j的关系
  8. HTML中为何P标签内不可包含块元素?
  9. python表达式
  10. java执行时的两个常见问题(无法加载主类)