1. 程式人生 > 其它 >多執行緒案例-龜兔賽跑

多執行緒案例-龜兔賽跑

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();//讓兔執行緒延時 } }