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

原创 2008年10月01日 20:12:00
原文地址: http://www.java2000.net/p10593
  1. /**
  2.  * 一段模拟龟兔赛跑的多线程代码。<br>
  3.  * 兔子比乌龟快5倍,但休息的时间长10倍。
  4.  * 
  5.  * @author 赵学庆,Java世纪网(java2000.net)
  6.  * 
  7.  */
  8. public class T {

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

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

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

  50.   }
  51. }

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

  72.   }
  73. }

版权声明:本文为博主原创文章,未经博主允许不得转载。

Java多线程—龟兔赛跑问题

什么是多线程?在回答这个问题之前先要明白什么是线程,线程是能独立运行的基本单位,要完成程序的运行,最先执行的就是线程,线程的“容器”叫做进程,如原子构成分子,分子构成元素,程序就是元素,进程相当于分子...
  • renl123470
  • renl123470
  • 2016年08月28日 11:41
  • 1738

java多线程之龟兔赛跑问题

/**  * Description: 龟兔赛跑游戏  * Copyright (c) , 2016, Jansonxu  * This program is protected by cop...
  • java_goodstudy
  • java_goodstudy
  • 2016年01月26日 11:01
  • 4353

多线程实现——新龟兔赛跑

新龟兔赛跑: 规则:龟兔同时起步,每10毫秒秒跑1米,终点为100米,兔子跑步的能力强,乌龟跑步的能力弱 途中:1.兔子跑到10米的时候,谦让乌龟一下,接着跑 ...
  • Mus_Li
  • Mus_Li
  • 2017年04月23日 13:14
  • 778

Java多线程龟兔赛跑

  • 2011年05月13日 12:13
  • 1KB
  • 下载

龟兔赛跑 多线程 C# 动画显示

  • 2010年05月20日 14:53
  • 96KB
  • 下载

Java 线程(龟兔赛跑游戏)

  • 2011年04月03日 08:27
  • 3KB
  • 下载

龟兔赛跑之Java多线程通讯初识

龟兔赛跑案例,是一个经典的多线程并发的实例。通过这个案例的学习,可以对Java中线程之间通讯有一个初步的认识。...
  • UtopiaOfArtoria
  • UtopiaOfArtoria
  • 2017年09月21日 19:24
  • 139

C#模拟超人和小怪兽赛跑——多线程学习之(二)牛刀小试

在上一篇博客中对线程有了一个初步的概要框架,从这篇博客开始,从代码层面深入学习C#的多线程编程艺术……     线程的重点在于线程的控制,这里使用C#创建控制台程序,模拟超人和小怪兽赛跑的故...
  • lmdcszh
  • lmdcszh
  • 2012年08月08日 17:33
  • 2911

多线程程序设计之龟兔赛跑

要求:利用多线程编程编写一个龟兔赛跑程序。乌龟:速度慢,休息时间短;兔子:速度快,休息时间长。class SimpleThread extends Thread { public int id,...
  • k1246195917
  • k1246195917
  • 2011年05月16日 15:16
  • 3076

JAVA多线程实现龟兔赛跑

要求 1、兔子每秒跑5米,但是每10米要休息2秒 2、乌龟每秒钟4米,不休息 3、谁先到达终点,比赛结束 首先创建一个动物类Animal package com.th.animal; ...
  • u013278314
  • u013278314
  • 2017年10月13日 09:18
  • 576
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一段模拟龟兔赛跑的多线程代码
举报原因:
原因补充:

(最多只允许输入30个字)