创建两个线程(Thread、Runnable两种方式都可以),一个代码兔子(Rabbit);一个代表 (Tortoise)。线程内部死循环跑步,到达终点则跳出循环!要求如下:

  1. Rabbit 每次从 100~200之间随机出一个数,作为线程睡眠时间。睡眠结束后跑5米,统计兔子跑的距离,到达终点(100米)结束循环。

  2. Tortoise 每次从 30~60之间随机出一个数,作为线程睡眠时间。睡眠结束后跑2米,统计乌龟跑的距离,到达终点(100米)结束循环。

  • 最后观察谁先到达终点...


代码:
package com.hcq.day;public class Main2 {public static void main(String[] args) {RunningMan r1 = new RunningMan(RunningMan.RABBIT);RunningMan r2 = new RunningMan(RunningMan.TORTOISE);Thread t1 = new Thread(r1);Thread t2 = new Thread(r2);t1.start();t2.start();}}
package com.hcq.day;import java.util.Random;public class RunningMan implements Runnable {public static final int RABBIT = 1;// 代表兔子public static final int TORTOISE = 2;// 代表乌龟private int step;// 表示步长private String runName;// 动物名字private Random r;private int[] randomBounds = new int[2];// 存储随机时间public RunningMan(int runType) {if (runType == RABBIT) {this.step = 5;this.randomBounds[0] = 100;this.randomBounds[1] = 200;this.runName = "兔子";} else if (runType == TORTOISE) {this.step = 2;this.randomBounds[0] = 30;this.randomBounds[1] = 60;this.runName = "乌龟";}r = new Random();}@Overridepublic void run() {try {int sum = 0;while (true) {int sleepTime = r.nextInt(randomBounds[1] - randomBounds[0] + 1) + randomBounds[0];Thread.sleep(sleepTime);sum += step;System.out.println(runName + "奔跑中.." + sum);if (sum >= 100) {System.err.println(runName + "到达终点!!!");break;}}} catch (InterruptedException e) {e.printStackTrace();}}}
截图:

java 龟兔赛跑观察比赛结果(使用线程)相关推荐

  1. Java通过Executors提供四种线程池

    http://cuisuqiang.iteye.com/blog/2019372 Java通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如 ...

  2. 《Java并发编程的艺术》——线程(笔记)

    文章目录 四.Java并发编程基础 4.1 线程简介 4.1.1 什么是线程 4.1.2 为什么要使用多线程 4.1.3 线程优先级 4.1.4 线程的状态 4.1.5 Daemon线程 4.2 启动 ...

  3. Java并发编程与技术内幕:线程池深入理解

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要: 本文主要讲了Java当中的线程池的使用方法.注意事项及其实现源码实现原理,并辅以实例加 ...

  4. java主线程等待所有子线程执行完毕再执行

    java主线程等待所有子线程执行完毕在执行,这个需求其实我们在工作中经常会用到,比如用户下单一个产品,后台会做一系列的处理,为了提高效率,每个处理都可以用一个线程来执行,所有处理完成了之后才会返回给用 ...

  5. 一台 Java 服务器可以跑多少个线程?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 转自:简书,作者:新栋BOOK www.jianshu.com/p ...

  6. 线上经验总结:一台 Java 服务器可以跑多少个线程?

    一台java服务器能跑多少个线程? 这个问题来自一次线上报警如下图,超过了我们的配置阈值. 京东自研UMP监控分析 打出jstack文件,通过IBM Thread and Monitor Dump A ...

  7. Java并发学习之玩转线程池

    2019独角兽企业重金招聘Python工程师标准>>> 线程池的使用姿势 基本上实际的项目不可能离开线程池,只是看你有没有注意到罢了 作为以业务需求为驱动,最顺溜的是写if-else ...

  8. Java虚拟机最多支持多少个线程的探讨

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 来源 | jb51.net/article/49087.htm McGovernTheory ...

  9. java set和get原理_Java线程池的实现原理和使用

    为什么用线程池 在我们进行开发的时候,为了充分利用系统资源,我们通常会进行多线程开发,实现起来非常简单,需要使用线程的时候就去创建一个线程(继承Thread类.实现Runnable接口.使用Calla ...

最新文章

  1. 2012年12月4期手机网页开发
  2. 使用Dockerfile制作镜像
  3. 中标麒麟桌面版yum安装mysql_中标麒麟Neokylin6桌面版如何本地yum安装软件
  4. ar 和 nm 用法
  5. python天天向上代码解析-python列表解析和生成器表达式
  6. netlify支持php吗,用 hugo 和 netlify 搭建blog【转】
  7. 计算机ps图片在哪里看,如何在Photoshop中查看照片的EXIF信息如何删除照片的exif信息...
  8. python自动生成采集规则_python 织梦自动采集更新脚本
  9. 经济学和哲学_边做边学的哲学
  10. Java中的Servlet详解
  11. 傅里叶变换与反变换(李永乐老师笔记)
  12. 机器学习-对线性回归、逻辑回归、各种回归的概念学习
  13. 计算机专业毕业了,还要不要参加培训班
  14. 简单学生成绩分析系统
  15. 【用户角色权限设计】
  16. 密立根油滴实验的c语言程序,密立根油滴实验数据处理程序c++
  17. 51CTO多功能双肩包【博客活动礼品】
  18. vim编辑器删除键失效问题
  19. 17AHU排位赛3 D题 旋转吧!雪月花 ! (DFS序,线段树维护树上最值)
  20. 总结(CFAI,AWB,Denoise2D,Sharpen)

热门文章

  1. windows安装java
  2. 设计PCB时 Layout软件如何开窗
  3. 【算法】广度优先遍历 (BFS)
  4. Howlerjs 音频播放插件
  5. PHP 环境配置:Windows系统下的PHP环境变量配置
  6. AI在招聘领域的这些应用,你会是被第一轮淘汰的吗
  7. 一文带你搭建简单的酒店推荐系统(附代码演练)
  8. C++实现带头结点单链表
  9. WinForm 关于任务栏图标进程结束后图标无法自动清除的问题!
  10. mac 打开网页慢_老Mac电脑打开网页慢怎么处理