题目:有四匹马,进行赛跑,观测比赛过程

首先,先定义一个Thread类,代表马类

public class HorseThread extends Thread

这里继承Thread类,是因为每一匹马在自己的赛道上面跑,不会干涉别的赛马。接下来我们给赛马一些基本属性。

    private double speed;//速度private double stamina;//体力private double rest;//体力回复速度private double miles;//总路程String rank;//记录排名//构造类public HorseThread(String name, double speed, double stamina,double miles) {super(name);this.speed = speed;this.stamina = stamina;this.miles = miles;this.rest = stamina/10;}

接下来我们要重写run()方法,来模拟赛马在赛道上驰骋的过程

    @Overridepublic void run() {double tempStamina=this.stamina;//记录最大体力值System.out.println(Thread.currentThread().getName()+"开始跑了!");while(miles>=0){//每秒跑一次try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}miles -= speed;//剩余路程stamina -=10;//剩余体力if (stamina<=0){System.out.println(Thread.currentThread().getName()+"需要休息!");try {Thread.sleep((long) rest);//体力回复到满值所需要的时间} catch (InterruptedException e) {e.printStackTrace();}stamina = tempStamina;//体力回复到最大值System.out.println(Thread.currentThread().getName()+"再次跑起来了!");}}System.out.println(Thread.currentThread().getName()+"到达终点了!");this.rank = Thread.currentThread().getName();//当马跑完时记录她们的名字}

赛马类我们已经写好了,下面就是准备赛场了:

public class HorseRace {public static void main(String[] args) {double miles = 1000;//赛场长度//放置赛马HorseThread h1 = new HorseThread("东海帝王", 50, 100,miles);HorseThread h2 = new HorseThread("特别周", 70, 80,miles);HorseThread h3 = new HorseThread("黄金船", 100, 50,miles);HorseThread h4 = new HorseThread("草上飞", 40, 200,miles);//比赛开始h1.start();h2.start();h3.start();h4.start();
}

赛场上,除了赛马,还有应该有什么呢?裁判!

我们可以用主线程作为裁判:

ArrayList<String> ranks = new ArrayList<>();ArrayList<String> ranks = new ArrayList<>();//用集合下标记录赛马排名//记录各个赛马状态 0为未完赛 1为完赛int index1=0;int index2=0;int index3=0;int index4=0;while (index1==0||index2==0||index3==0||index4==0){//检测频率为1s一次try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}//当赛马完赛的时候,赛马的rank值为线程名,不为空,可以用来判断是否完赛if (h1.rank != null){//当赛马未完赛的时候进行检测,以免多次写入数组if (index1==0){ranks.add(h1.getName());h1.interrupt();index1=1;//赛马完赛,状态记为1}}if (h2.rank != null){if (index2==0){ranks.add(h2.getName());h2.interrupt();index2=1;}}if (h3.rank != null){if (index3==0){ranks.add(h3.getName());h3.interrupt();index3=1;};}if (h4.rank != null){if (index4==0){ranks.add(h4.getName());h4.interrupt();index4=1;}}}System.out.println("冠军是:" + ranks.get(0));//最后输出冠军

Java多线程运用——赛马小游戏相关推荐

  1. 【汇智学堂】JAVA多线程实现的小游戏-弹球-1

    /*** 定义界面*/package com.huizhi;import javax.swing.*; import java.awt.*;public class Ui extends JFrame ...

  2. java多线程捕鱼达人小游戏

    1.创建弹窗,并设置窗口属性. 2.创建Pool类,继承JPanel类,并重写paint方法. 3.创建Net类, 4.创建Fish类,继承Thread类,重写run方法. 5.刚开始先画一条鱼,一个 ...

  3. Java版打飞机小游戏

    放假写的一个Java端打飞机小游戏. 复习到的知识点有:java图形界面,多线程,集合框架等. 主要的收获是知道了处理图层的方式,即JLayeredPane层次面板,主要思路 如下: 1.       ...

  4. java简单通讯录的实现02person类_用java实现简单的小游戏(你一定玩过)

    用java实现简单的小游戏(你一定玩过) 对于java初学者来说,通过一些学习小游戏来对swing学习以及对java基础的学习是一个好的方法,同时也给学习带来了很多的乐趣,接下来就给大家分享一个jav ...

  5. java实现简单窗体小游戏----球球大作战

    java实现简单窗体小游戏----球球大作战 需求分析 1.分析小球的属性: ​ 坐标.大小.颜色.方向.速度 2.抽象类:Ball ​ 设计类:BallMain-创建窗体 ​ BallJPanel- ...

  6. main java game,playgame 一个JAVA编写的飞行小游戏,有基本完整的 框架,适合初学者参照学习 Other s 其他 238万源代码下载- www.pudn.com...

    文件名称: playgame下载 收藏√  [ 5  4  3  2  1 ] 开发工具: Java 文件大小: 7050 KB 上传时间: 2013-06-06 下载次数: 3 提 供 者: Lyq ...

  7. 简易贪吃蛇小游戏java版_用GUI实现java版贪吃蛇小游戏

    本文实例为大家分享了java版贪吃蛇小游戏的具体代码,供大家参考,具体内容如下 项目结构 新建一个JFrame窗口,作为程序入口 public class GameStart{ public stat ...

  8. java演练 猜奇偶小游戏开发 DB游戏必输的设计

    java演练 猜奇偶小游戏开发 DB游戏必输的设计 阶段一,视频 https://www.ixigua.com/6870390946270446088?logTag=J_BVJOm_LIpQ-hWYY ...

  9. java2048小游戏源码及解析_200行java代码实现2048小游戏

    本文实例为大家分享了java实现2048小游戏的具体代码,供大家参考,具体内容如下 效果图: 游戏介绍: 1.2048是一款益智类小游戏,刚开始随机出现两个数字,可以上下左右控制数字的移动. 2.当选 ...

最新文章

  1. alert和console的区别
  2. 为网站加入Drupal星球制作RSS订阅源
  3. App设计灵感之十二组精美的电商App设计案例
  4. Linux下遍历目录下的文件
  5. ArcEngine一些代码实现(转载)
  6. extjs_10_自己定义combotree组件
  7. php memcache 有效期,PHP可以拿到memcache中的key的过期时间吗?
  8. python opencv 找到圆点标定板所有点后通过距离找四个角点2
  9. oracle清理磁盘空间
  10. Java 电阻计算器(一)
  11. javascript入门到进阶 - js系列一:三种基本的数据结构
  12. java中使用libreoffice将word转换成pdf格式
  13. _itemmod_creation_enchant
  14. SAS首席科学家:如何选择机器学习算法?
  15. 组图:1968年墨西哥城奥运会
  16. 看不见的竞争 文件和数据压缩
  17. JETT(二)-Java简单实现
  18. spring中自带的缓存springcache
  19. ERP系统能给企业带来的那些好处
  20. 【蓝桥杯】算法提高 奥运会开幕式

热门文章

  1. Windows畸形文件夹
  2. if语句里面如果是赋值语句
  3. GNOME Commander: Linux文件管理器
  4. Xcelsius启动出现Problem Accessing Excel: Exiting问题的解决
  5. 经常说的ROI是什么,怎么计算
  6. vue项目引入阿里巴巴矢量图标库 ——字体图标
  7. C#实现微信公众号群发消息(解决一天只能发一次的限制)实例分享
  8. @Component与@Configuration区别
  9. document.getElementsByTagName()返回值
  10. 三分钟读懂客户端证书