1)首先来个赛道距离,然后要离终点越来越近
2)判断比赛是否结束
3)打印出胜利者
4)龟兔赛跑开始
5)故事中是乌龟赢,兔子需要睡觉,所有我们来模拟兔子睡觉
6)终于,乌龟赢了比赛。
1 public class Race implements Runnable {
2
3 // 胜利者,,因为只有一个,所以写成static的
4 private static String winner;
5 @Override
6 public void run() {
7
8 for (int i = 0; i <= 100 ; i++) {
9 if(Thread.currentThread().getName().equals("兔子")) {
10 try {
11 Thread.sleep(10);
12 } catch (InterruptedException e) {
13 e.printStackTrace();
14 }
15 }
16 // 判断比赛是否结束
17 boolean flag = gameOver(i);
18 // 如果比赛结束,就停止程序
19 if (flag) {
20 break;
21 }
22 System.out.println( Thread.currentThread().getName() + "走了" + i + "步");
23 }
24
25 }
26
27 // 判断是否完成比赛
28 private boolean gameOver (int steps) {
29 // 判断是否有胜利者
30 if (winner != null) { // 已经存在胜利者
31 return true;
32 } else {
33 if (steps >= 100) {
34 winner = Thread.currentThread().getName();
35 System.out.println("winner is " + winner);
36 return true;
37 }
38 }
39 return false;
40 }
41
42 public static void main(String[] args) {
43 Race race = new Race();
44 new Thread(race,"乌龟").start(); // 乌龟跑起来
45 new Thread(race,"兔子").start(); // 兔子跑起来
46
47 }
48
49
50