让乌龟和兔子在同一个赛道从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多线程模拟龟兔赛跑的更多相关文章

  1. java多线程模拟生产者消费者问题,公司面试常常问的题。。。

    package com.cn.test3; //java多线程模拟生产者消费者问题 //ProducerConsumer是主类,Producer生产者,Consumer消费者,Product产品 // ...

  2. java多线程模拟停车系统

    import java.util.Random; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent ...

  3. 使用Redis中间件解决商品秒杀活动中出现的超卖问题(使用Java多线程模拟高并发环境)

    一.引入Jedis依赖 可以新建Spring或Maven工程,在pom文件中引入Jedis依赖: <dependency> <groupId>redis.clients< ...

  4. 2018.4.16 Java多线程实现龟兔赛跑

    龟兔赛跑(通过多线程来实现 里面的具体方法) TT.java package com.lanqiao.demo3; /** * 乌龟 * @author Administrator * */ publ ...

  5. Java 多线程之龟兔赛跑(文件夹——读取文件——时间)

    版权声明:本文为博主原创文章,未经博主允许不得转载. 描述: 乌龟和兔子(各自是一个Java线程)在我们的电脑上赛跑,我们为它们指定一个跑道(本地文件系统上的一个目录,该目录包含子目录).跑的规则是读 ...

  6. 用java多线程模拟数据库连接池

    模拟一个ConnectionDriver,用于创建Connection package tread.demo.threadpool; import java.lang.reflect.Invocati ...

  7. java多线程模拟红绿灯案例

    代码Lighter.java: package pack1; /** * 灯线程 * @author Administrator * */ public class Lighter extends T ...

  8. java多线程模拟停车位问题

    /** * */ package Synchronized; /** * @author libin * */ public class CarTest { public static void ma ...

  9. Java多线程-并发协作(生产者消费者模型)

    对于多线程程序来说,不管任何编程语言,生产者和消费者模型都是最经典的.就像学习每一门编程语言一样,Hello World!都是最经典的例子. 实际上,准确说应该是“生产者-消费者-仓储”模型,离开了仓 ...

随机推荐

  1. Delphi控件大全

    首先来大体上为控件分一下类,以方便我们后面的讨论.   但因为控件的种类太多,所以就粗略的分为如下几个类别∶   ---界面风格类   ---Shell外观类   ---Editor类   ---Gr ...

  2. Codeforces 954 D Fight Against Traffic

    Discription Little town Nsk consists of n junctions connected by m bidirectional roads. Each road co ...

  3. 基于Hexo + Git + Nginx的博客发布

    进过上一篇<树莓派搭建私人服务器>,我们已经有一个私人服务器了,现在需要做点什么实际事情了,先搭一个博客分享自己的经验吧. 相关文章:1.<树莓派搭建私人服务器>(http:/ ...

  4. java nio实现非阻塞Socket通信实例

    服务器 package com.java.xiong.Net17; import java.io.IOException; import java.net.InetSocketAddress; imp ...

  5. win10 localhost 解析为::1 的解决办法

    win10 localhost 解析为::1 的解决办法 学习了:https://blog.csdn.net/ambertian/article/details/70238020

  6. jquery在ajax新加入的元素后绑定事件click

    使用YII在做一个点击小图.能够在弹出窗体中显示大图的功能的时候,发现.GridView首页面的列表项按点击时一切正常,但按下了下一页后. 再点击小图,就不起作用了.原来,这是GridView使用了a ...

  7. es5~es6

    1.用箭头函数减少代码(相信你在Vue已经看到了) ES5: function greetings (name) { return 'hello ' + name } ES6: const greet ...

  8. Android常见UI组件之ListView(二)——定制ListView

    Android常见UI组件之ListView(二)--定制ListView 这一篇接上篇.展示ListView中选择多个项及实现筛选功能~ 1.在位于res/values目录下的strings.xml ...

  9. LeetCode 168 Excel Sheet Column Title(Excel的列向表标题)

    翻译 给定一个正整数,返回它作为出如今Excel表中的正确列向标题. 比如: 1 -> A 2 -> B 3 -> C ... 26 -> Z 27 -> AA 28 - ...

  10. E. Dreamoon and Strings(Codeforces Round #272)

    E. Dreamoon and Strings time limit per test 1 second memory limit per test 256 megabytes input stand ...