多執行緒——龜兔賽跑問題
阿新 • • 發佈:2020-12-21
龜兔賽跑
100米兩條執行緒 一個烏龜 一個兔子
如果是兔子的話設定延遲函式
當有一方勝出 馬上跳出迴圈 ==>比賽終止
package Lesson_Thread;
public class Race implements Runnable {
private static String winner;
@Override
public void run() { //開始跑步 100米
for (int i = 0; i <=100; i++) {
boolean flag = finish (i); //接受”勝利者“返回的布林型別 一有勝利者 馬上跳出迴圈
if(flag){
break;
}
if(Thread.currentThread().getName()=="兔子" && i%50==0){ //兔子睡覺
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e. printStackTrace();
}
}
System.out.println(Thread.currentThread().getName()+"跑了第"+i+"步");
}
}
public boolean finish(int step){ //判斷是否有勝利者
if(winner!=null){ //有且只有一個勝利者
return true;
}
if( step>=100){ //判斷勝利者
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(); //在Thread中傳入Runable並呼叫start方法
new Thread(race,"烏龜").start();
}
}