java多线程模拟龟兔赛跑

让乌龟和兔子在同一个赛道从1开始跑到100,看看谁更快.

 1 public class Racer implements Runnable{
 2     private static String winner;//胜利者
 3 
 4     @Override
 5     public void run() {
 6         //赛道
 7         for (int step = 1; step <= 100; step++) {
 8  /* if(Thread.currentThread().getName().equals("兔子")&&step%50==0){
 9       try {
10           Thread.sleep(200);
11       } catch (InterruptedException e) {
12           e.printStackTrace();
13       }
14   }*/
15             System.out.println(Thread.currentThread().getName()+"---->走了"+step+"步");
16 
17              boolean flag= GameOver(step);
18              if(flag){
19                  break;
20              }
21 
22         }
23     }
24 
25     private boolean GameOver(int step) {
26         if(winner!=null){
27             return true;
28         }else{
29             if(step==100){
30                 winner=Thread.currentThread().getName();
31                 System.out.println("胜利者是-->"+winner);
32             }
33         }
34         return false;
35     }
36 
37     public static void main(String[] args) {
38         Racer racer = new Racer();
39         new Thread(racer,"兔子").start();
40         new Thread(racer,"乌龟").start();
41 
42     }
43 
44 }

运行结果:

兔子---->走了1步

...................

兔子---->走了98步
兔子---->走了99步
兔子---->走了100步
胜利者是-->兔子

怎么竟然是兔子赢了,可是现实中龟兔赛跑是乌龟赢了,我们加入线程睡眠要是兔子就让他睡一会,乌龟就可以赢了.

 1 public class Racer implements Runnable{
 2     private static String winner;//胜利者
 3 
 4     @Override
 5     public void run() {
 6         //赛道
 7         for (int step = 1; step <= 100; step++) {
 8   if(Thread.currentThread().getName().equals("兔子")&&step%50==0){
 9       try {
10           Thread.sleep(200);
11       } catch (InterruptedException e) {
12           e.printStackTrace();
13       }
14   }
15             System.out.println(Thread.currentThread().getName()+"---->走了"+step+"步");
16 
17              boolean flag= GameOver(step);
18              if(flag){
19                  break;
20              }
21 
22         }
23     }
24 
25     private boolean GameOver(int step) {
26         if(winner!=null){
27             return true;
28         }else{
29             if(step==100){
30                 winner=Thread.currentThread().getName();
31                 System.out.println("胜利者是-->"+winner);
32             }
33         }
34         return false;
35     }
36 
37     public static void main(String[] args) {
38         Racer racer = new Racer();
39         new Thread(racer,"兔子").start();
40         new Thread(racer,"乌龟").start();
41 
42     }
43 
44 }

运行结果:

乌龟---->走了96步
乌龟---->走了97步
乌龟---->走了98步
乌龟---->走了99步
乌龟---->走了100步
胜利者是-->乌龟
兔子---->走了50步

这下不管怎么跑都是乌龟赢了.

转载于:https://www.cnblogs.com/xiaoqiqistudy/p/10984279.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值