fuchou-angle 发表于 2009-6-14 07:41:28

一段模拟龟兔赛跑的多线程Java代码

一段模拟龟兔赛跑的多线程Java代码


  Java代码

/**  
 * 一段模拟龟兔赛跑的多线程程序。<br>  
 * 兔子比乌龟快5倍,但休息的时间长10倍。  
 *   
 * @author 赵学庆,Java世纪网(java2000.net)  
 *   
 */  
public class T {   
  
  public static void main(String[] args) {   
    TortoiseRace a = new TortoiseRace();   
    Thread runner1 = new Thread(a);   
    RabbitRace b = new RabbitRace();   
    Thread runner2 = new Thread(b);   
    runner1.start();   
    runner2.start();   
    while (ready < 2) {   
      try {   
        Thread.sleep(1);   
      } catch (InterruptedException e) {   
        e.printStackTrace();   
      }   
    }   
    synchronized (lock) {   
      lock.notifyAll();   
    }   
  }   
  
  static Object lock = new Object();   
  static int ready = 0;   
}   
  
class TortoiseRace implements Runnable {   
  public void run() {   
    synchronized (T.lock) {   
      T.ready++;   
      try {   
        T.lock.wait();   
      } catch (InterruptedException e1) {   
        e1.printStackTrace();   
      }   
    }   
    int TortoiseDistance = 0;   
    for (int i = 0; TortoiseDistance <= 1000; i++) {   
      TortoiseDistance++;   
      System.out.println("乌龟跑了1米!");   
      try {   
        Thread.sleep(1);   
      } catch (InterruptedException e) {   
      }   
    }   
    System.out.println("乌龟已经跑完了比赛路程!");   
  
  }   
}   
  
class RabbitRace implements Runnable {   
  public void run() {   
    T.ready++;   
    synchronized (T.lock) {   
      try {   
        T.lock.wait();   
      } catch (InterruptedException e1) {   
        e1.printStackTrace();   
      }   
    }   
    int RabbitDistance = 0;   
    for (int j = 0; RabbitDistance <= 1000; j++) {   
      RabbitDistance += 5;   
      System.out.println("兔子跑了5米!");   
      try {   
        Thread.s

leep(10);   
      } catch (InterruptedException e) {   
      }   
    }   
    System.out.println("兔子跑完了比赛路程!");   
  
  }   
}  

chaqu` 发表于 2009-7-13 11:36:57

呵呵
谢谢楼主分享
页: [1]
查看完整版本: 一段模拟龟兔赛跑的多线程Java代码