溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

在Java中利用多線程怎么模擬龜兔賽跑

發(fā)布時(shí)間:2020-11-24 14:52:24 來源:億速云 閱讀:545 作者:Leah 欄目:開發(fā)技術(shù)

在Java中利用多線程怎么模擬龜兔賽跑?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

Java多線程模擬龜兔賽跑,供大家參考,具體內(nèi)容如下

筆者利用Java多線程技術(shù),將兔子和烏龜?shù)呐懿揭詢蓚€(gè)線程的方式模擬出來,以達(dá)到一個(gè)初步的效果。
題目如下:路程總距離為35米
兔子:每秒跑5米,每跑10米,休息2秒;
烏龜:每秒跑3米,不休息。

所用工具

JDK1.8+IntelliJ IDEA 2020.1

代碼

Race.java:(線程類,通過new出來的對(duì)象的不同線程名,然后分別模擬兔子和烏龜?shù)呐懿剑?/p>

package task;
import org.omg.Messaging.SYNC_WITH_TRANSPORT;
public class Race extends Thread {
  private int mile=35;//剩下的路程
  public int getMile() {
    return mile;
  }
  public void setMile(int mile) {
    this.mile = mile;
  }
  public void run(){
    long time1=System.currentTimeMillis();//記錄開始跑的時(shí)間
    if(getName().equals("兔子")){
      while(mile>0) {
        if ((int)(System.currentTimeMillis()-time1) % 2000 == 0 && (int)(System.currentTimeMillis()-time1) != 0) {//每跑10米即每過2秒休息2秒
          try {
            System.out.println("兔子正在休息2秒");
            Thread.sleep(2000);
          } catch (InterruptedException e) {
            e.printStackTrace();
          }
        }
        if((int)(System.currentTimeMillis()-time1)%1000==0&& (int)(System.currentTimeMillis()-time1) != 0) {
          try {
            Thread.sleep(1000);
            mile -= 5;
            System.out.println("兔子跑了"+(35-mile)+"米");//35-mile即為跑過的距離
          }catch(InterruptedException e){
            e.printStackTrace();
          }
        }
      }
      System.out.println("兔子到達(dá)終點(diǎn)");
    }else if(getName().equals("烏龜")){
      while(mile>0){
        if((int)(System.currentTimeMillis()-time1)%1000==0&& (int)(System.currentTimeMillis()-time1) != 0) {
          try {
            Thread.sleep(1000);
            mile -= 3;
            if(mile<0){
              mile=0;
            }
            System.out.println("烏龜跑了"+(35-mile)+"米");//35-mile即為跑過的距離
          }catch(InterruptedException e){
            e.printStackTrace();
          }
        }
      }
      System.out.println("烏龜?shù)竭_(dá)終點(diǎn)");
    }else{

    }
  }
}

測(cè)試類demoo.java:(通過設(shè)置線程優(yōu)先級(jí)來實(shí)現(xiàn)烏龜先跑,否則線程執(zhí)行順序不可控!?。。?/p>

package task;
public class demoo {
  public static void main(String[] args) {
    Thread rabbit=new Race();
    rabbit.setName("兔子");
    Thread turtle=new Race();
    turtle.setName("烏龜");
    turtle.setPriority(Thread.MAX_PRIORITY);
    rabbit.setPriority(Thread.MIN_PRIORITY);
    turtle.start();
    rabbit.start();
  }
}

測(cè)試結(jié)果:

在Java中利用多線程怎么模擬龜兔賽跑

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI