多執行緒案例-龜兔賽跑
阿新 • • 發佈:2022-04-21
1.要有賽道距離,我和終點越來越近 2.判斷比賽是否結束 3.打印出勝利者 4.龜兔賽跑開始 5.模擬兔子睡覺 6.龜贏了
import java.util.Scanner; //模擬龜兔賽跑 public class Main implements Runnable { //勝利者 private static String winncr; public void run(){ //建立賽道的距離 for (int i=0;i<=100 ;i++ ){ //判斷,讓兔子休息 if(Thread.currentThread().getName().equals("兔")&&i%10==0){//當執行緒名稱為兔時且每走10步,就讓他休息 try { Thread.sleep(10); } catch(InterruptedException e) { e.printStackTrace(); } }else{ //判斷比賽是否結束 boolean flag=gameOver(i); if(flag){//flag=true,就結束程式 break; } System.out.println(Thread.currentThread().getName()+"---->跑了"+i+"步"); } } } //判斷遊戲是否停止 private boolean gameOver(int sleps){//sleps:步數 //判斷是否有勝利者 if(winncr!=null){//已經有勝利者 return true; }{ if(sleps>=100){ winncr=Thread.currentThread().getName();//如果步數等於100,就得到這個執行緒的名字 System.out.println("勝者:"+winncr+"走了"+sleps); return true; } } //如果上面兩個判斷都沒有執行就代表比賽未結束 return false; } public static void main(String[] args) { //建立資源,也相當於是賽道 Main pf=new Main(); //建立兩個執行緒,並命名,然後啟動 new Thread(pf,"龜").start(); new Thread(pf,"兔").start();//讓兔執行緒延時 } }