龜兔賽跑案例(Java代碼演示)

案例要求:

代碼演示:

/**
 * PACKAGE_NAME
 * Created on 2020/6/11.
 */
public class demo03 implements Runnable{

    //勝利者  使用static保證只有一個
    private static String winner;

    @Override
    public void run() {
        for (int i = 0; i <= 100; i++) {
            //模擬兔子休息   每10休息一次
            if (Thread.currentThread().getName().equals("兔子")&& i%10==0){
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            //判斷比賽是否結束
            boolean flag = gameOver(i);
            //如果比賽結束了  接聽之程序
            if (flag){
                break;
            }
            System.out.println(Thread.currentThread().getName()+"跑了"+i+"米");
        }
    }

    //判斷是否完成比賽
    private boolean gameOver(int stpes){
        //判斷是否有勝利者
        if (winner!=null){//說明有勝利者
            return true;
        }{
            if (stpes>=100){
                winner = Thread.currentThread().getName();
                System.out.println("勝利者是"+winner);
                return true;
            }
        }
        return false;
    }

    //主程序
    public static void main(String[] args) {
        demo03 demo03 = new demo03();
        //兩條線程
        new Thread(demo03,"兔子").start();
        new Thread(demo03,"烏龜").start();
    }
}

輸出結果:

........................................................
烏龜跑了93米
烏龜跑了94米
烏龜跑了95米
烏龜跑了96米
烏龜跑了97米
烏龜跑了98米
烏龜跑了99米
勝利者是烏龜

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章