java多线程模拟龟兔赛跑
让乌龟和兔子在同一个赛道从1开始跑到100,看看谁更快.
public class Racer implements Runnable{
private static String winner;//胜利者
@Override
public void run() {
//赛道
for (int step = 1; step <= 100; step++) {
/* if(Thread.currentThread().getName().equals("兔子")&&step%50==0){
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}*/
System.out.println(Thread.currentThread().getName()+"---->走了"+step+"步");
boolean flag= GameOver(step);
if(flag){
break;
}
}
}
private boolean GameOver(int step) {
if(winner!=null){
return true;
}else{
if(step==100){
winner=Thread.currentThread().getName();
System.out.println("胜利者是-->"+winner);
}
}
return false;
}
public static void main(String[] args) {
Racer racer = new Racer();
new Thread(racer,"兔子").start();
new Thread(racer,"乌龟").start();
}
}
运行结果:
兔子---->走了1步
...................
兔子---->走了98步
兔子---->走了99步
兔子---->走了100步
胜利者是-->兔子
怎么竟然是兔子赢了,可是现实中龟兔赛跑是乌龟赢了,我们加入线程睡眠要是兔子就让他睡一会,乌龟就可以赢了.
public class Racer implements Runnable{
private static String winner;//胜利者
@Override
public void run() {
//赛道
for (int step = 1; step <= 100; step++) {
if(Thread.currentThread().getName().equals("兔子")&&step%50==0){
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(Thread.currentThread().getName()+"---->走了"+step+"步");
boolean flag= GameOver(step);
if(flag){
break;
}
}
}
private boolean GameOver(int step) {
if(winner!=null){
return true;
}else{
if(step==100){
winner=Thread.currentThread().getName();
System.out.println("胜利者是-->"+winner);
}
}
return false;
}
public static void main(String[] args) {
Racer racer = new Racer();
new Thread(racer,"兔子").start();
new Thread(racer,"乌龟").start();
}
}
运行结果:
乌龟---->走了96步
乌龟---->走了97步
乌龟---->走了98步
乌龟---->走了99步
乌龟---->走了100步
胜利者是-->乌龟
兔子---->走了50步
这下不管怎么跑都是乌龟赢了.
java多线程模拟龟兔赛跑的更多相关文章
- java多线程模拟生产者消费者问题,公司面试常常问的题。。。
package com.cn.test3; //java多线程模拟生产者消费者问题 //ProducerConsumer是主类,Producer生产者,Consumer消费者,Product产品 // ...
- java多线程模拟停车系统
import java.util.Random; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent ...
- 使用Redis中间件解决商品秒杀活动中出现的超卖问题(使用Java多线程模拟高并发环境)
一.引入Jedis依赖 可以新建Spring或Maven工程,在pom文件中引入Jedis依赖: <dependency> <groupId>redis.clients< ...
- 2018.4.16 Java多线程实现龟兔赛跑
龟兔赛跑(通过多线程来实现 里面的具体方法) TT.java package com.lanqiao.demo3; /** * 乌龟 * @author Administrator * */ publ ...
- Java 多线程之龟兔赛跑(文件夹——读取文件——时间)
版权声明:本文为博主原创文章,未经博主允许不得转载. 描述: 乌龟和兔子(各自是一个Java线程)在我们的电脑上赛跑,我们为它们指定一个跑道(本地文件系统上的一个目录,该目录包含子目录).跑的规则是读 ...
- 用java多线程模拟数据库连接池
模拟一个ConnectionDriver,用于创建Connection package tread.demo.threadpool; import java.lang.reflect.Invocati ...
- java多线程模拟红绿灯案例
代码Lighter.java: package pack1; /** * 灯线程 * @author Administrator * */ public class Lighter extends T ...
- java多线程模拟停车位问题
/** * */ package Synchronized; /** * @author libin * */ public class CarTest { public static void ma ...
- Java多线程-并发协作(生产者消费者模型)
对于多线程程序来说,不管任何编程语言,生产者和消费者模型都是最经典的.就像学习每一门编程语言一样,Hello World!都是最经典的例子. 实际上,准确说应该是“生产者-消费者-仓储”模型,离开了仓 ...
随机推荐
- HDU 2050 【dp】【简单数学】
题意: 中文. 思路: 不难发现数学规律是这样的,每次增加的划分区域的数量是每次增加的交点的数量再加一.然后就总结出了递推公式. #include<stdio.h> ]; int main ...
- API StringBuffer类例子
package cn.zmh.Buffer; public class StringBufferDemo { public static void main(String[] args) { prin ...
- Android时时监測手机的旋转角度 依据旋转角度确定在什么角度载入竖屏布局 在什么时候载入横屏布局
一.场景描写叙述: 最近开发中遇到个问题,就是我们在做横竖屏切换的功能时.横竖屏布局是操作系统去感知的,作为开发员没法确定Activity在什么时候载入横屏布局,在什么时候载入竖屏布局.因此为了找到载 ...
- Deepin-安装php
点击即可:下载:PHP5.6 下载完后执行下面这条shell命令即可完成安装 文件保存为:php_install.sh ,运行时:sh php_install.sh .tar.bz2 cd php- ...
- XxPay支付系统-boot版本 使用
https://segmentfault.com/a/1190000016987391?utm_source=tag-newest 有三个版本: spring boot 版本: spring clou ...
- vmware10上安装mac os 10.9
来源地址:http://dtbuluo.com/blog/archives/350 序言: 前几天跟朋友开玩笑说,要不我们一起来学习一下swift编程语言吧~我们就抱着玩玩的态度,没有想过要做出什么优 ...
- 项目已经部署,tomcat已经启动,网址也没问题,却出现404错误
这个有可能是tomcat在初始化资源的时候发生了异常...判断tomcat是否发生异常就是看tomcat启动日志里有没有报错就行了. 另一种原因就是可能是修改了项目名称.因为web名称实际上是没有跟着 ...
- 2016/3/30 ①投票checkbox ②进度条两个div套起百分比控制内div(width) <div><div></div></div> ③数据库test2 表 diaoyan... 35岁发展方向投票
分两个页面,要点:提交form 相连action method 两个页面可以合成一个页面action传到自身页面 但分开较清晰 第一个页面vote.php <!DOCTYPE html P ...
- C# 敏感词过滤
public class BadWordFilter { #region 变量 private HashSet<string> hash = new HashSet<string&g ...
- ou've likely run out of ephemeral ports on your system
redis.exceptions.ConnectionError: Error 99 connecting to 127.0.0.1:6379. Cannot assign requested add ...