java多线程模拟龟兔赛跑

Posted xiaoqiqistudy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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步

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

以上是关于java多线程模拟龟兔赛跑的主要内容,如果未能解决你的问题,请参考以下文章

java多线程模拟龟兔赛跑

Java多线程: 龟兔赛跑案例

多线程:多线程的应用(网图下载模拟售票龟兔赛跑)

多线程:多线程的应用(网图下载模拟售票龟兔赛跑)

多线程模拟龟兔赛跑游戏

多线程模拟龟兔赛跑游戏