자바 다 중 스 레 드 시 뮬 레이 션 거북이 토끼 달리기 실현

자바 다 중 스 레 드 시 뮬 레이 션 거북이 토끼 경주,여러분 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
필 자 는 자바 다 중 스 레 드 기술 을 이용 하여 토끼 와 거북이 의 달리 기 를 두 스 레 드 방식 으로 모 의 하여 초보적인 효 과 를 거 두 었 다.
제목 은 다음 과 같다.
토끼:1 초 에 5 미 터 를 달리 고 10 미 터 를 달 릴 때마다 2 초 휴식 합 니 다.
거북이:1 초 에 3 미 터 를 뛰 고 쉬 지 않 습 니 다.
사용 도구
JDK1.8+IntelliJ IDEA 2020.1
코드
Race.java:(스 레 드 클래스,new 를 통 해 나 온 대상 의 서로 다른 스 레 드 이름,그리고 토끼 와 거북이 의 달리 기 를 각각 모 의 합 니 다)

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("      ");
    }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("      ");
    }else{

    }
  }
}
테스트 클래스 demoo.java:(스 레 드 우선 순 위 를 설정 하여 거북이 가 먼저 달 리 는 것 을 실현 합 니 다.그렇지 않 으 면 스 레 드 실행 순 서 를 제어 할 수 없습니다!!)

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();
  }
}
테스트 결과:

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기