phaser模拟百米赛跑
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模拟百米赛跑相关推荐
- 使用CyclicBarrier模拟百米赛跑
使用CyclicBarrier模拟百米赛跑 什么是CyclicBarrier 怎么使用CyclicBarrier 使用CyclicBarrier模拟百米赛跑 大概流程: 原代码 输出结果 什么是Cyc ...
- 多线程模拟实现百米赛跑
文章目录 1. CountDownLatch 1.1 概念 1.2 基础方法 2. 模拟实现百米赛跑 2.1 设计思路 2.2 代码实现 2.3 运行结果 题目: 设计并编写一个程序, 10名选手准备 ...
- java学校举行运动会,百米赛跑跑入10 秒内的学生有资格进决赛,根据性别分别进入男子组和女子组使用if条件语句
package cn.bdqn.demo01; import java.util.Scanner; public class IfDemo01 { public static void main(St ...
- java多线程百米赛跑_JAVA CountDownLatch(倒计时计数器)用法实例
这篇文章主要介绍了JAVA CountDownLatch(倒计时计数器)用法实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 方法说明: publ ...
- 人类百米赛跑能跑进9秒吗
参考消息网8月7日报道据英国<每日邮报>网站8月2日报道,百米赛跑的纪录保持者是尤塞恩·博尔特,他在2009年世界田径锦标赛中以惊人的9.58秒的成绩夺冠.迄今为止,尚无人能在百米赛跑中突 ...
- java多线程百米赛跑_多线程-百米赛跑
题目:百米赛跑 10个运动员进行百米赛跑,要求: 1.同时起跑 2.所有运动员都到达终点才算比赛结束 3.输出成绩排名 import java.util.ArrayList; 9/** 10 * ...
- 多线程之线程的百米赛跑
西城旧梦梦旧人 2017-06-13 22:42 在百米赛跑中,多个参赛队员在听到发令枪响之后,开始跑步,到达终点后结束计时,然后统计各个队员的成绩.而这个在线程中需要考虑两点,第一:发令枪响,这是所 ...
- 【Scratch课件-广播并等待】百米赛跑
一份问卷调查,期待听到您的声音 课件自评: 知识基础: 滑行.说话.点击事件.普通广播 故事背景: 学校里正在举行一年一度的运动会.同学们都非常踊跃地参加了各种运动项目,有短路.长跑.接力跑.跳绳 ...
- Java基础之分支结构--嵌套if选择结构——百米赛跑决赛
import java.util.Scanner; public class Run{public static void main(String[] args){Scanner sc = new S ...
最新文章
- sendmail服务器案例配置
- Java 中关于 try、catch、finally 中的细节分析
- mysql解释器优化_MySQL——SQL性能分析优化利器之Explain
- iOS App 上架(Analysis 工具使用)
- 什么是光纤的波长?看看有哪些是你不知道的!
- keras从入门到放弃(二十二)一维卷积处理 RNN文本分类
- 小白学python需要多久_小白学Python | 你还在说你入不了门吗
- 【OpenCV 例程200篇】79. 频率域图像滤波的基本步骤
- python3程序运行中会跳过注释行,Python: 读取文件时如何忽略#条注释行
- 工作资讯002---FaaS和PaaS的关系_Iaas_Paas_Saas
- Linux signal 编程(转载)
- PAT甲级1022 map、set的使用
- 供应商与客户 连接平台 的谋合
- Object-C日志记录
- 已解决:系统更新报错KB3001652--错误0x80070643
- O'Reilly总裁提姆-奥莱理:什么是Web 2.0
- DML和DDL含义和区别
- 3.利用PageRank(重启随机游走)预测蛋白质相互作用
- C#模拟银行转账系统
- 【悠然】mysql简单指令笔记
热门文章
- Git学习笔记之使用git reset --hard回滚代码(回滚提交记录)
- docker 安装easyMock
- 多线程调试(gdb命令行和使用集成开发qtcreator查看线程状态)
- ansys用什么cpu_学ansys软件需要什么样的电脑配置才能运行?
- 编写简单的辅助脚本来在 Google 表格上记账
- 计算机网络原理04741,自考计算机网络原理
- 网页加载缓慢、卡顿,但PING正常的问题记录
- ‘annotationProcessor‘ dependencies won‘t be recognized as kapt annotation processors. Please change
- 隐语义模型LFM(Latent Factor Model)
- 隐语义模型LFM基础代码