欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java實現(xiàn)多線程模擬龜兔賽跑

 更新時間:2020年11月23日 16:36:29   作者:ChristopherIn  
這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)多線程模擬龜兔賽跑,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

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

所用工具

JDK1.8+IntelliJ IDEA 2020.1

代碼

Race.java:(線程類,通過new出來的對象的不同線程名,然后分別模擬兔子和烏龜?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();//記錄開始跑的時間
    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á)終點");
    }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á)終點");
    }else{

    }
  }
}

測試類demoo.java:(通過設(shè)置線程優(yōu)先級來實現(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();
  }
}

測試結(jié)果:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java責(zé)任鏈設(shè)計模式

    Java責(zé)任鏈設(shè)計模式

    這篇文章主要介紹了Java責(zé)任鏈設(shè)計模式的相關(guān)資料,需要的朋友可以參考下
    2016-03-03
  • 詳談Java中net.sf.json包關(guān)于JSON與對象互轉(zhuǎn)的坑

    詳談Java中net.sf.json包關(guān)于JSON與對象互轉(zhuǎn)的坑

    下面小編就為大家分享一篇Java中net.sf.json包關(guān)于JSON與對象互轉(zhuǎn)的坑,具有很好的參考價值,希望對大家有所幫助
    2017-12-12
  • Java中的cglib代理詳解

    Java中的cglib代理詳解

    這篇文章主要介紹了Java中的cglib代理詳解, 代理模式是一種設(shè)計模式,它可以為其他對象提供一種代理,以控制對該對象的訪問,可以在運(yùn)行時動態(tài)地創(chuàng)建代理對象,而不需要手動編寫代理類的代碼,需要的朋友可以參考下
    2023-09-09
  • Java基礎(chǔ)詳解之包裝類的裝箱拆箱

    Java基礎(chǔ)詳解之包裝類的裝箱拆箱

    這篇文章主要介紹了Java基礎(chǔ)詳解之包裝類的裝箱拆箱,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • Java實現(xiàn)人機(jī)猜拳小游戲

    Java實現(xiàn)人機(jī)猜拳小游戲

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)人機(jī)猜拳小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Java中的Rocketmq事務(wù)消息詳解

    Java中的Rocketmq事務(wù)消息詳解

    這篇文章主要介紹了Java中的Rocketmq事務(wù)消息詳解,RocketMQ的事務(wù)消息支持在業(yè)務(wù)邏輯與發(fā)送消息之間提供事務(wù)保證,RocketMQ通過兩階段的方式提供事務(wù)消息的支持,需要的朋友可以參考下
    2023-08-08
  • 創(chuàng)建網(wǎng)關(guān)項目(Spring Cloud Gateway)過程詳解

    創(chuàng)建網(wǎng)關(guān)項目(Spring Cloud Gateway)過程詳解

    這篇文章主要介紹了創(chuàng)建網(wǎng)關(guān)項目(Spring Cloud Gateway)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • Java的Hibernate框架中的基本映射用法講解

    Java的Hibernate框架中的基本映射用法講解

    映射是Hibernate框架操作數(shù)據(jù)庫數(shù)據(jù)的重要特性之一,這里我們來看一下Java的Hibernate框架中的基本映射用法講解,包括最基本的單向一對一與多對一映射關(guān)系等:
    2016-07-07
  • SpringBoot?項目打成?jar后加載外部配置文件的操作方法

    SpringBoot?項目打成?jar后加載外部配置文件的操作方法

    這篇文章主要介紹了SpringBoot?項目打成?jar后加載外部配置文件的操作方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • 深入解析HashMap的put方法

    深入解析HashMap的put方法

    在Java集合中,HashMap的重要性不言而喻,作為一種存儲鍵值對的數(shù)據(jù)結(jié)構(gòu),它在日常開發(fā)中有著非常多的應(yīng)用場景,也是面試中的高頻考點,本篇文章就來分析一下HashMap集合中的put方法
    2022-01-01

最新評論