package com.brendan.cn.concurrent.match;import java.util.concurrent.Phaser;public class Match {// 模拟了100米赛跑,10名选手,只等裁判一声令下。当所有人都到达终点时,比赛结束。public static void main(String[] args) throws InterruptedException {final Phaser phaser=new Phaser(10) ;phaser.register();// 十名选手for (int index = 0; index < 10; index++) {new Thread(new Player(phaser),"player"+index).start();}System.out.println("Game Start");phaser.arriveAndAwaitAdvance();System.out.println("预备 。。。。");phaser.arriveAndAwaitAdvance();System.out.println("跑 。跑  。跑 。。。");phaser.arriveAndDeregister();//是否非终止态一直等待while (!phaser.isTerminated()){}System.out.println("Game Over");}static  class  Player implements Runnable {private final Phaser phaser;Player(Phaser phaser) {this.phaser = phaser;}@Overridepublic void run() {try {// 第一阶段——等待创建好所有线程再开始phaser.arriveAndAwaitAdvance();// 第二阶段——等待所有选手准备好再开始Thread.sleep((long) (Math.random() * 10000));System.out.println(Thread.currentThread().getName() + " ready"+ "  , Phase :"+ phaser.getPhase());phaser.arriveAndAwaitAdvance();// 第三阶段——等待所有选手准备好到达,到达后,该线程从phaser中注销,不在进行下面的阶段。Thread.sleep((long) (Math.random() * 10000));System.out.println(Thread.currentThread().getName() + " arrived" + "  , Phase :"+ phaser.getPhase());phaser.arriveAndDeregister();} catch (InterruptedException e) {e.printStackTrace();}}}
}

phaser模拟百米赛跑相关推荐

  1. 使用CyclicBarrier模拟百米赛跑

    使用CyclicBarrier模拟百米赛跑 什么是CyclicBarrier 怎么使用CyclicBarrier 使用CyclicBarrier模拟百米赛跑 大概流程: 原代码 输出结果 什么是Cyc ...

  2. 多线程模拟实现百米赛跑

    文章目录 1. CountDownLatch 1.1 概念 1.2 基础方法 2. 模拟实现百米赛跑 2.1 设计思路 2.2 代码实现 2.3 运行结果 题目: 设计并编写一个程序, 10名选手准备 ...

  3. java学校举行运动会,百米赛跑跑入10 秒内的学生有资格进决赛,根据性别分别进入男子组和女子组使用if条件语句

    package cn.bdqn.demo01; import java.util.Scanner; public class IfDemo01 { public static void main(St ...

  4. java多线程百米赛跑_JAVA CountDownLatch(倒计时计数器)用法实例

    这篇文章主要介绍了JAVA CountDownLatch(倒计时计数器)用法实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 方法说明: publ ...

  5. 人类百米赛跑能跑进9秒吗

    参考消息网8月7日报道据英国<每日邮报>网站8月2日报道,百米赛跑的纪录保持者是尤塞恩·博尔特,他在2009年世界田径锦标赛中以惊人的9.58秒的成绩夺冠.迄今为止,尚无人能在百米赛跑中突 ...

  6. java多线程百米赛跑_多线程-百米赛跑

    题目:百米赛跑 10个运动员进行百米赛跑,要求: 1.同时起跑 2.所有运动员都到达终点才算比赛结束 3.输出成绩排名 import java.util.ArrayList; 9/** 10   * ...

  7. 多线程之线程的百米赛跑

    西城旧梦梦旧人 2017-06-13 22:42 在百米赛跑中,多个参赛队员在听到发令枪响之后,开始跑步,到达终点后结束计时,然后统计各个队员的成绩.而这个在线程中需要考虑两点,第一:发令枪响,这是所 ...

  8. 【Scratch课件-广播并等待】百米赛跑

    一份问卷调查,期待听到您的声音 课件自评: ​ 知识基础: 滑行.说话.点击事件.普通广播 故事背景: 学校里正在举行一年一度的运动会.同学们都非常踊跃地参加了各种运动项目,有短路.长跑.接力跑.跳绳 ...

  9. Java基础之分支结构--嵌套if选择结构——百米赛跑决赛

    import java.util.Scanner; public class Run{public static void main(String[] args){Scanner sc = new S ...

最新文章

  1. sendmail服务器案例配置
  2. Java 中关于 try、catch、finally 中的细节分析
  3. mysql解释器优化_MySQL——SQL性能分析优化利器之Explain
  4. iOS App 上架(Analysis 工具使用)
  5. 什么是光纤的波长?看看有哪些是你不知道的!
  6. keras从入门到放弃(二十二)一维卷积处理 RNN文本分类
  7. 小白学python需要多久_小白学Python | 你还在说你入不了门吗
  8. 【OpenCV 例程200篇】79. 频率域图像滤波的基本步骤
  9. python3程序运行中会跳过注释行,Python: 读取文件时如何忽略#条注释行
  10. 工作资讯002---FaaS和PaaS的关系_Iaas_Paas_Saas
  11. Linux signal 编程(转载)
  12. PAT甲级1022 map、set的使用
  13. 供应商与客户 连接平台 的谋合
  14. Object-C日志记录
  15. 已解决:系统更新报错KB3001652--错误0x80070643
  16. O'Reilly总裁提姆-奥莱理:什么是Web 2.0
  17. DML和DDL含义和区别
  18. 3.利用PageRank(重启随机游走)预测蛋白质相互作用
  19. C#模拟银行转账系统
  20. 【悠然】mysql简单指令笔记

热门文章

  1. Git学习笔记之使用git reset --hard回滚代码(回滚提交记录)
  2. docker 安装easyMock
  3. 多线程调试(gdb命令行和使用集成开发qtcreator查看线程状态)
  4. ansys用什么cpu_学ansys软件需要什么样的电脑配置才能运行?
  5. 编写简单的辅助脚本来在 Google 表格上记账
  6. 计算机网络原理04741,自考计算机网络原理
  7. 网页加载缓慢、卡顿,但PING正常的问题记录
  8. ‘annotationProcessor‘ dependencies won‘t be recognized as kapt annotation processors. Please change
  9. 隐语义模型LFM(Latent Factor Model)
  10. 隐语义模型LFM基础代码