多线程案例:龟兔赛跑
-
首先来个赛道距离,然后要离终点越来越近
-
判断比赛是否结束
-
打印出胜利者
-
龟兔赛跑开始
-
故事中是乌龟赢的,兔子需要睡觉,所以我们来模拟兔子睡觉
-
终于,乌龟赢得比赛
public class Race implements Runnable { private static String wineer; @Override public void run() { for (int i = 0; i <= 100; i++) { //模拟兔子休息 if (Thread.currentThread().getName().equals("兔子") && i%10==0){ try { Thread.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } } //判断比赛是否结束 boolean flag = gameOver(i); //如果比赛结束了,则停止程序 if (flag){ break; } System.out.println(Thread.currentThread().getName() + "跑了" + i + "步"); } } // 判断是否完成比赛 private boolean gameOver(int steps) { // 判断是否有胜利者 if (wineer != null) { // 已经有胜利者了 return true; }{ if (steps >= 100){ wineer = Thread.currentThread().getName(); System.out.println("胜利者是 ==>"+wineer); return true; } } return false; } public static void main(String[] args) { Race race = new Race(); new Thread(race,"兔子").start(); new Thread(race,"乌龟").start(); } }