【多線程】模擬龜兔賽跑
案例:龜兔賽跑-Race
- 首先來個賽道距離,然后要離終點越來越近
- 判斷比賽是否結(jié)束
- 打印出勝利者
- 龜兔曬跑開始
- 故事中是烏龜贏的,兔子需要睡覺,所有我們要模擬兔子睡覺
- 最后,烏龜贏得比賽
代碼示例:
/**
* @Description 模擬龜兔賽跑
* @Author hzx
* @Date 2022-03-26
*/
public class Race implements Runnable {
//勝利者
private static String winner;
@Override
public void run() {
for (int i = 0; i <= 30; i++) {
//模擬兔子休息,跑5步休息一下
if (Thread.currentThread().getName().equals("兔子") && i%5==0) {
try {
Thread.sleep(1);
} catch (Exception e) {
e.printStackTrace();
}
}
//判斷比賽是否結(jié)束
boolean flag = gameOver(i);
//如果比賽結(jié)束了,就停止程序
if (flag) {
break;
}
System.out.println(Thread.currentThread().getName()+"-->跑了"+i+"步");
}
}
//判斷是否完成比賽
private boolean gameOver(int steps) {
//判斷是否有勝利者,已經(jīng)有勝利者則返回true
if (winner != null ) {
return true;
}
if (steps >= 30) {
winner = Thread.currentThread().getName();
System.out.println("winner is "+ winner);
return true;
}
return false;
}
public static void main(String[] args) {
Race race = new Race();
new Thread(race, "兔子").start();
new Thread(race, "烏龜").start();
}
}
執(zhí)行結(jié)果:
烏龜-->跑了0步
烏龜-->跑了1步
烏龜-->跑了2步
烏龜-->跑了3步
烏龜-->跑了4步
烏龜-->跑了5步
烏龜-->跑了6步
烏龜-->跑了7步
烏龜-->跑了8步
烏龜-->跑了9步
烏龜-->跑了10步
烏龜-->跑了11步
烏龜-->跑了12步
烏龜-->跑了13步
烏龜-->跑了14步
烏龜-->跑了15步
烏龜-->跑了16步
烏龜-->跑了17步
烏龜-->跑了18步
兔子-->跑了0步
烏龜-->跑了19步
烏龜-->跑了20步
兔子-->跑了1步
烏龜-->跑了21步
兔子-->跑了2步
烏龜-->跑了22步
烏龜-->跑了23步
兔子-->跑了3步
兔子-->跑了4步
烏龜-->跑了24步
烏龜-->跑了25步
烏龜-->跑了26步
烏龜-->跑了27步
烏龜-->跑了28步
烏龜-->跑了29步
winner is 烏龜

浙公網(wǎng)安備 33010602011771號