实现Runnable接口,重写run方法
兔子睡觉用到了线程阻塞,名字用到了Thread.currentThread.getName()
完整代码
//龟兔赛跑 public class RaceOfRabbitAndTortoise implements Runnable { //胜利者 private static String winner; @Override public void run() { for (int i = 0; i <= 100; i++) { //模拟兔子睡觉,跑80步睡一毫秒 if (Thread.currentThread().getName().equals("兔子") && i % 80 == 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 (winner != null) { return true; } { if (steps >= 100) { winner = Thread.currentThread().getName(); System.out.println("胜利者是" + Thread.currentThread().getName()); return true; } } return false; } public static void main(String[] args) { RaceOfRabbitAndTortoise race = new RaceOfRabbitAndTortoise(); new Thread(race, "兔子").start(); new Thread(race, "乌龟").start(); } }