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

http://blog.youkuaiyun.com/java2000_net/archive/2008/10/01/3007788.aspx
  1.  * 一段模拟龟兔赛跑的多线程代码。<br>
  2.  * 兔子比乌龟快5倍,但休息的时间长10倍。
  3.  * 
  4.  * @author 赵学庆,Java世纪网(java2000.net)
  5.  * 
  6.  */
  7. public class T {

  8.   public static void main(String[] args) {
  9.     TortoiseRace a = new TortoiseRace();
  10.     Thread runner1 = new Thread(a);
  11.     RabbitRace b = new RabbitRace();
  12.     Thread runner2 = new Thread(b);
  13.     runner1.start();
  14.     runner2.start();
  15.     while (ready < 2) {
  16.       try {
  17.         Thread.sleep(1);
  18.       } catch (InterruptedException e) {
  19.         e.printStackTrace();
  20.       }
  21.     }
  22.     synchronized (lock) {
  23.       lock.notifyAll();
  24.     }
  25.   }

  26.   static Object lock = new Object();
  27.   static int ready = 0;
  28. }

  29. class TortoiseRace implements Runnable {
  30.   public void run() {
  31.     synchronized (T.lock) {
  32.       T.ready++;
  33.       try {
  34.         T.lock.wait();
  35.       } catch (InterruptedException e1) {
  36.         e1.printStackTrace();
  37.       }
  38.     }
  39.     int TortoiseDistance = 0;
  40.     for (int i = 0; TortoiseDistance <= 1000; i++) {
  41.       TortoiseDistance++;
  42.       System.out.println("乌龟跑了1米!");
  43.       try {
  44.         Thread.sleep(1);
  45.       } catch (InterruptedException e) {
  46.       }
  47.     }
  48.     System.out.println("乌龟已经跑完了比赛路程!");

  49.   }
  50. }

  51. class RabbitRace implements Runnable {
  52.   public void run() {
  53.     T.ready++;
  54.     synchronized (T.lock) {
  55.       try {
  56.         T.lock.wait();
  57.       } catch (InterruptedException e1) {
  58.         e1.printStackTrace();
  59.       }
  60.     }
  61.     int RabbitDistance = 0;
  62.     for (int j = 0; RabbitDistance <= 1000; j++) {
  63.       RabbitDistance += 5;
  64.       System.out.println("兔子跑了5米!");
  65.       try {
  66.         Thread.sleep(10);
  67.       } catch (InterruptedException e) {
  68.       }
  69.     }
  70.     System.out.println("兔子跑完了比赛路程!");

  71.   }
  72. }
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值