6.0、Java多线程——简单案例&龟兔赛跑
1、首先来个赛道距离,然后要离终点越来越近
2、判断比赛结束
3、打印出胜利者
4、龟兔赛跑开始
5、故事中是乌龟赢的,兔子需要睡觉,所以我们来模拟兔子睡觉
6、最终,乌龟赢得了比赛
实现代码如下所示:
Race.java 文件如下:
package com.hkl.demo01;
public class Race implements Runnable {
private static String winner;
public void run() {
for (int i = 1; i <= 100; i++) {
if(Thread.currentThread().getName().equals("兔子") && i%10 == 0) {
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if(winner != null) { //说明已经有胜出者了
break;
}else {
if(winner(i)) {
System.out.println("胜出者是"+winner);
break;
}
}
System.out.println(Thread.currentThread().getName()+"跑了"+i+"米");
}
}
//winner胜出
public static Boolean winner(int steps) {
if(steps >= 100) {
winner = Thread.currentThread().getName();
return true;
}else {
return false;
}
}
public static void main(String[] args) {
Race race = new Race();
new Thread(race,"兔子").start();
new Thread(race,"乌龟").start();
}
}
1、定义一个 winner 胜出者 用于另一个线程的停止
2、for 循环判断如果是兔子的线程且%10==0就让兔子休息一会
3、判断如果有已经产生胜出者就将当前线程停止、否则就判断一下当前是否有胜出者产生
4、如果上述情况都不符合该线程就前进一米