`
java2000.net
  • 浏览: 651283 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

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

    博客分类:
  • 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.sleep(10);
      } catch (InterruptedException e) {
      }
    }
    System.out.println("兔子跑完了比赛路程!");

  }
}
 
1
4
分享到:
评论
4 楼 zwaway 2012-08-06  
刚才又看了一下,这个模拟好像有点问题,因为执行TortoiseDistance++与RabbitDistance += 5这两句的时间几乎可以忽略,因此龟与兔的速度就是一个定值,即龟1/sleep(1)与兔5/sleep(10),这样明显龟的速度大于兔的速度,即然龟的速度是兔的速度2倍,怪不得的试了这么多一直是龟先完成。
3 楼 zwaway 2012-08-06  
哦,原来我看错了,加了两段标记,
   在 System.out.println("乌龟已经跑完了比赛路程!");之后加
    System.out.println("TortoiseDistance:"+TortoiseDistance);
在System.out.println("兔子跑完了比赛路程!");之后加
    System.out.println("RabbitDistance:"+RabbitDistance);
结果都是乌龟先完成比赛。
个人觉得程序再改进一下,谁先到达终点另一个线程就终止,再显示另一个线程跑了多远;或者是两个线程都跑完分别耗时多少。
2 楼 zwaway 2012-08-06  
觉得有点问题,测试了二十次都是兔子跑完了比赛。
1 楼 shengfuqiang 2012-05-24  
有什么内涵,指点指点?

相关推荐

    Java 线程(龟兔赛跑游戏)

    简单Java多线程实例 游戏中已经定义好乌龟和兔子 玩家也可输入休息间隔和速度于乌龟和兔子比赛 加入了兔子速度随机化输出结果每一次都不一样 实现线程效果

    C++龟兔赛跑程序

    C++实现的龟兔赛跑程序 (模拟龟兔赛跑)本练习中要模拟龟兔赛跑的寓言故事。用随机数产生器建立模拟龟兔赛跑的程序。 对手从70个方格的第1格开始起跑,每格表示跑道上的一个可能位置,终点线在第70格处。 第一个...

    趣味JAVA-- 一个描述龟兔赛跑的多线程小程序

    一段模拟龟兔赛跑的多线程程序,兔子比乌龟快5倍,但休息的时间长10倍。

    龟兔赛跑多线程C++程序

    用c++程序实现龟兔赛跑程序,用多核多线程的设计方法

    Java龟兔赛跑

    "Java龟兔赛跑"是一个将经典寓言故事与计算机编程相结合的实例,它利用Java语言来创建一个具有动画效果的龟兔赛跑模拟程序。本文将详细解析这一程序的核心概念和技术。 首先,我们了解Java语言的基础。Java是一种...

    模拟龟兔赛跑程序

    要求: 能设置比赛时间,马匹的数量等等。 在任意时间段内马匹的速度是随机的。 开始比赛之后以动画显示赛马过程。 提示:使用多线程

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

    在本文中,我们将深入探讨如何使用C#编程语言实现一个基于多线程的"龟兔赛跑"动画显示。这个项目结合了并发处理、图形用户界面(GUI)设计以及动画技术,展示了C#在实际应用中的强大功能。 首先,我们要理解多线程...

    模拟龟兔赛跑问题,判断两者的输赢

    是模拟龟兔赛跑问题的,有一定的可视化效果,采用文件输出

    龟兔赛跑源程序

    用c++程序实现龟兔赛跑程序,用多核多线程的设计方法

    Java多线程龟兔赛跑

    java多线程实现龟兔赛跑,兔子的速度比乌龟快,休息的时间比乌龟长

    简单的龟兔赛跑(双线程跑)

    "简单的龟兔赛跑(双线程跑)"是一个典型的多线程编程示例,它利用了C#或其他支持多线程的语言来模拟经典的寓言故事——龟兔赛跑。在这个场景中,"双线程应用委托"是核心概念,它确保了两个线程(代表龟和兔)的并发...

    java线程龟兔赛跑

    本示例中的“java线程龟兔赛跑”是一个经典的多线程应用,通过模拟龟兔赛跑的故事,帮助开发者理解如何在Java中创建和管理线程。 首先,我们要了解Java中创建线程的两种主要方式:通过继承`Thread`类和实现`...

    java龟兔赛跑源代码

    在Java编程语言中,"java龟兔赛跑源代码"是一个经典的示例,它通过多线程技术展示了并发编程的概念。这个程序模拟了著名的寓言故事——龟兔赛跑,其中乌龟和兔子分别由两个独立运行的线程来表示。下面我们将详细探讨...

    龟兔赛跑素材flash源文件

    在IT领域,"龟兔赛跑"是一个常见的寓言故事,常被用作编程教学中的例子,它讲述了一个关于坚持不懈与骄傲自满的故事。在这个主题下,"flash源文件"指的是使用Adobe Flash软件创建的动画或交互式内容的原始文件。...

    VisualStudio2008创建的龟兔赛跑动画多线程程序演示,C#源代码.

    本示例中的"Visual Studio 2008创建的龟兔赛跑动画多线程程序演示"是一个很好的教学实例,它结合了编程语言C#与微软的开发环境Visual Studio 2008,来展示如何利用多线程技术来实现动态的图形化应用程序。...

    龟兔赛跑_龟兔赛跑_scratch_

    《龟兔赛跑》是一款基于Scratch编程语言创作的动画作品。Scratch是麻省理工学院(MIT)的“终身幼儿园团队”开发的一款面向儿童的图形化编程工具,旨在通过拖拽积木式的编程语块,让孩子们在玩乐中学习编程思维。这款...

    龟兔赛跑 C++多线程编程

    在“龟兔赛跑”这一经典故事的基础上,本程序通过模拟兔子和乌龟的行为来展示多线程技术的应用。兔子和乌龟分别有自己的行为模式,并且这些行为的发生有一定的概率。 ##### 兔子(Bulletin)的行为模式: - **睡觉*...

    操作系统课设:多线程实现龟兔赛跑

    操作系统课设中的“多线程实现龟兔赛跑”是一个典型的并发编程实例,它通过模拟经典寓言故事来展示多线程技术的应用。在这个项目中,我们主要关注以下几个知识点: 1. **多线程**:多线程是操作系统中一个核心概念...

    英语演讲龟兔赛跑PPT课件.pptx

    本资源是一个英语演讲 PPT 课件,标题为“英语演讲龟兔赛跑PPT课件.pptx”。该资源包含 11 张幻灯片,讲述了龟兔赛跑的故事,旨在教会学生英语演讲和阅读能力。 知识点 1:英语演讲技巧 该资源通过龟兔赛跑的故事...

    利用java实现龟兔赛跑 包含实验报告

    通过编写并调试一个龟兔赛跑的多线程程序,学生能够更好地理解线程的创建、运行以及线程间的交互。 #### 实验内容与要求 1. **实验内容**:调试P300的例题13.11。 2. **重点及难点**: - 创建两个线程分别代表...

Global site tag (gtag.js) - Google Analytics