java多线程龟兔赛跑(JAVA的程序设计,设计一个龟兔赛跑的线程类模拟参与赛跑)

:暂无数据 2026-06-28 04:10:01 :0

java多线程龟兔赛跑(JAVA的程序设计,设计一个龟兔赛跑的线程类模拟参与赛跑)

大家好,如果您还对java多线程龟兔赛跑不太了解,没有关系,今天就由本站为大家分享java多线程龟兔赛跑的知识,包括JAVA的程序设计,设计一个龟兔赛跑的线程类模拟参与赛跑的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

本文目录

JAVA的程序设计,设计一个龟兔赛跑的线程类模拟参与赛跑

感觉挺有趣的,试着写了个~

public static void main(String arg) {
new wugui().run();
new tuzi().run();
}

static class wugui {
final int sudu = 4;// 乌龟的速度是每秒4米
public static boolean hasEnd = false;// 是否已经跑到终点
public void run() {
new Thread() {
public void run() {
int distance = 0;
while (distance 《 100) {
try {
Thread.sleep(1000);
distance += sudu;
System.out.println(“小乌龟跑了“ + distance + “米“);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
hasEnd = true;
if (tuzi.hasEnd) {
System.out.println(“呜呜,差一点点就赢了~“);
} else {
System.out.println(“胜利是属于有准备的人的,你的自大害了你!-------乌龟赢了“);
}
}
}.start();
}
}

static class tuzi {
final int sudu = 5;// 兔子的速度是每秒5米
public static boolean hasEnd = false;// 是否已经跑到终点
public void run() {
new Thread() {
@Override
public void run() {
int distance = 0;// 跑了多少米
boolean hasXiuXi = false;// 是否休息过
while (distance 《 100) {
try {
Thread.sleep(1000);
distance += sudu;
System.out.println(“小兔子跑了“ + distance + “米“);
if (distance 》 50 && !hasXiuXi) {
System.out.println(“小兔子累了,决定休息一会儿~“);
Thread.sleep((long) (10000 * Math.random()));
System.out.println(“小兔子休息够了,又开始跑了,决一胜负吧!“);
hasXiuXi = true;
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
hasEnd = true;
if (wugui.hasEnd) {
System.out.println(“呜呜,早知道就不休息了~“);
} else {
System.out.println(“哇哈哈,你个战5渣也想赢我~~做梦去吧!!-------兔子赢了“);
}
}
}.start();
}
}

java龟兔赛跑求简单多线程

public class Competition {
private volatile static boolean gameOver = false;//用来标记是否有人到达终点,到达终点后游戏结束
//乌龟的实现方式
static class Tortoise implements Runnable{
private volatile int total = 0;//用来记录当前已经前行了多少距离
@Override
public void run() {
while(!gameOver){
int step = (int)(Math.random()*5+1);//产生1-5的随机数
total += step;
try {
Thread.sleep(200);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}
public int getTotal(){
return total;
}
}
//兔子的实现方式
static class Rabbit implements Runnable{
private volatile int total = 0;
@Override
public void run() {
while(!gameOver){
int step = (int)(Math.random()*5+1);
total += step;
try {
Thread.sleep(200);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public int getTotal(){
return total;
}

}
/**
 * @param args
 */
public static void main(String args) {
// TODO Auto-generated method stub
final Tortoise tortoise = new Tortoise();
final Rabbit rabbit = new Rabbit();
new Thread(tortoise).start();
new Thread(rabbit).start();
//下面多起了一个线程,相当于比赛的时候的裁判员,他每隔一段时间就看一下是否有人到达终点,若有人到达则宣判该人获胜,游戏结束
new Thread(new Runnable(){

@Override
public void run() {
// TODO Auto-generated method stub
while(!gameOver){
int torLen = tortoise.getTotal();//获得乌龟前行的距离
int rabLen = rabbit.getTotal();//获得兔子前行的距离
System.out.println(“乌龟:“+torLen+“,兔子“+rabLen);
if(torLen 》= 100 && rabLen 《100){
System.out.println(“乌龟获胜!!!“);
gameOver = true;
}else if(rabLen 》= 100 && torLen 《100){
System.out.println(“兔子获胜!!!“);
gameOver = true;
}else if(rabLen 》=100 && torLen 》= 100){//这里有可能两人同时到达终点
System.out.println(“同时到达终点!!!“);
gameOver = true;
}
try {
Thread.sleep(210);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

}).start();

}

JAVA龟兔赛跑问题

先让兔子进入阻塞状态,然后等乌龟跑完终点后唤醒兔子线程就行;下面是各个方法的配套使用(网上copy的,总结的很不错)1. sleep() 方法:sleep() 允许 指定以毫秒为单位的一段时间作为参数,它使得线程在指定的时间
内进入阻塞状态,不能得到CPU 时间,指定的时间一过,线程重新进入可执行状态。
  典型地,sleep() 被用在等待某个资源就绪的情形:测试发现条件不满足后,让线程阻塞一段时间后
重新测试,直到条件满足为止。
  2. suspend() 和 resume() 方法:两个方法配套使用,suspend()使得线程进入阻塞状态,并且不会
自动恢复,必须其对应的resume() 被调用,才能使得线程重新进入可执行状态。典型地,suspend() 和
resume() 被用在等待另一个线程产生的结果的情形:测试发现结果还没有产生后,让线程阻塞,另一个
线程产生了结果后,调用 resume() 使其恢复。
  3. yield() 方法:yield() 使得线程放弃当前分得的 CPU 时间,但是不使线程阻塞,即线程仍处于
可执行状态,随时可能再次分得 CPU 时间。调用 yield() 的效果等价于调度程序认为该线程已执行了足
够的时间从而转到另一个线程。
  4. wait() 和 notify() 方法:两个方法配套使用,wait() 使得线程进入阻塞状态,它有两种形式
,一种允许指定以毫秒为单位的一段时间作为参数,另一种没有参数,前者当对应的 notify() 被调用或
者超出指定时间时线程重新进入可执行状态,后者则必须对应的 notify() 被调用。

详情请见http://blog.csdn.net/small____fish/article/details/7726468

急求java龟兔赛跑

public class GuiTuSaiPao implements Runnable {
private String name;
private int length=0;

public GuiTuSaiPao(){}

public GuiTuSaiPao(String name){
this.name=name;
}

public void run(){
while(true){
//每次停500毫秒
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
//向前跑十米
length+=10;
System.out.println(name+“已跑了“+length+“米.“);
//到达终点
if(length》=100){
System.out.println(name+“,已经到达终点!“);
//结束赛跑,break
break;
}
}
}

public static void main(String args) {
GuiTuSaiPao wugui=new GuiTuSaiPao(“乌龟“);
GuiTuSaiPao tuzi=new GuiTuSaiPao(“兔子“);
Thread thread=new Thread(wugui);
Thread thread2=new Thread(tuzi);
//启动线程
thread.start();
thread2.start();
}
}

java 用多线程模拟龟兔赛跑:

public class TortoiseAndHareRace {
public static void main(String args) {
Runnable vs=new Race();
Thread hare=new Thread(vs,“Hare“);
Thread tortoise =new Thread(vs,“Tortoise“);
System.out.println(“Ready!GO!“);
hare.start();
tortoise.start();
}
}
class Race implements Runnable{
private static final int S=1000;
@Override
public void run() {
if(Thread.currentThread().getName().equals(“Hare“)){
int sHare=0;
while(sHare《=S){
sHare+=5;
if(sHare%20==0)
try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}
}
}else{
int sTortoise=0;
while(sTortoise《=S){
sTortoise++;
if(sTortoise%100==0)
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

用JAVA多线程实现龟兔赛跑

程序如下:

/**
*
* GuiTuSaiPao.java
* @author Antonio
* 2009年9月2日20:16:33
* 实现Runnable接口中的run方法
*
*/
public class GuiTuSaiPao implements Runnable {
private String name;
private int length=0;

public GuiTuSaiPao(){}

public GuiTuSaiPao(String name){
this.name=name;
}

public void run(){
while(true){
//每次停500毫秒
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
//向前跑十米
length+=10;
System.out.println(name+“已跑了“+length+“米.“);
//到达终点
if(length》=100){
System.out.println(name+“,已经到达终点!“);
//结束赛跑,break
break;
}
}
}

public static void main(String args) {
GuiTuSaiPao wugui=new GuiTuSaiPao(“乌龟“);
GuiTuSaiPao tuzi=new GuiTuSaiPao(“兔子“);
Thread thread=new Thread(wugui);
Thread thread2=new Thread(tuzi);
//启动线程
thread.start();
thread2.start();

}

}

输出结果:(不一定每次都一样!)
乌龟已跑了10米.
兔子已跑了10米.
兔子已跑了20米.
乌龟已跑了20米.
乌龟已跑了30米.
兔子已跑了30米.
兔子已跑了40米.
乌龟已跑了40米.
兔子已跑了50米.
乌龟已跑了50米.
乌龟已跑了60米.
兔子已跑了60米.
乌龟已跑了70米.
兔子已跑了70米.
乌龟已跑了80米.
兔子已跑了80米.
兔子已跑了90米.
乌龟已跑了90米.
兔子已跑了100米.
兔子,已经到达终点!
乌龟已跑了100米.
乌龟,已经到达终点!

完全看rp,这就是线程!

给分吧,哈哈

Java的龟兔赛跑多线程问题

public class Competition {
private volatile static boolean gameOver = false;//用来标记是否有人到达终点,到达终点后游戏结束
//乌龟的实现方式
static class Tortoise implements Runnable{
private volatile int total = 0;//用来记录当前已经前行了多少距离
@Override
public void run() {
while(!gameOver){
int step = (int)(Math.random()*5+1);//产生1-5的随机数
total += step;
try {
Thread.sleep(200);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}
public int getTotal(){
return total;
}
}
//兔子的实现方式
static class Rabbit implements Runnable{
private volatile int total = 0;
@Override
public void run() {
while(!gameOver){
int step = (int)(Math.random()*5+1);
total += step;
try {
Thread.sleep(200);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public int getTotal(){
return total;
}

}
/**
 * @param args
 */
public static void main(String args) {
// TODO Auto-generated method stub
final Tortoise tortoise = new Tortoise();
final Rabbit rabbit = new Rabbit();
new Thread(tortoise).start();
new Thread(rabbit).start();
//下面多起了一个线程,相当于比赛的时候的裁判员,他每隔一段时间就看一下是否有人到达终点,若有人到达则宣判该人获胜,游戏结束
new Thread(new Runnable(){

@Override
public void run() {
// TODO Auto-generated method stub
while(!gameOver){
int torLen = tortoise.getTotal();//获得乌龟前行的距离
int rabLen = rabbit.getTotal();//获得兔子前行的距离
System.out.println(“乌龟:“+torLen+“,兔子“+rabLen);
if(torLen 》= 100 && rabLen 《100){
System.out.println(“乌龟获胜!!!“);
gameOver = true;
}else if(rabLen 》= 100 && torLen 《100){
System.out.println(“兔子获胜!!!“);
gameOver = true;
}else if(rabLen 》=100 && torLen 》= 100){//这里有可能两人同时到达终点
System.out.println(“同时到达终点!!!“);
gameOver = true;
}
try {
Thread.sleep(210);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

}).start();

}

java模拟龟兔赛跑问题用多线程实现

import java.util.Date;
public class Test extends Thread{ private int tortoise_walk = 0; // 乌龟已跑长度存放变量
private int rabbit_walk = 0; // 兔子已跑长度存放变量
private int finish = 1000; // 终点
private volatile boolean hasWinner = false;// 胜利者诞生 /**
*
* @ClassName: Tortoise_Run
* @Description: TODO(乌龟奔跑线程)
* @author guotingchao
* @date 2012-3-6 上午10:20:45
*
*/
class Tortoise_Run implements Runnable {
@Override
public void run() {
try {
while (!hasWinner) {
if (tortoise_walk % 100 == 0 && (tortoise_walk != 0||tortoise_walk》=finish)) { //乌龟每100米休息500毫秒
System.out.println(“乌龟休息中………………“);
Thread.sleep(500);
}
tortoise_walk++;
System.out.println(“乌龟已跑“+tortoise_walk+“米“);
}

} catch (InterruptedException e) {
e.printStackTrace();
}
}
} /**
*
* @ClassName: Rabbit_Run
* @Description: TODO(兔子奔跑线程)
* @date 2012-3-6 上午10:25:10
* @author guotingchao
*/
class Rabbit_Run implements Runnable {
@Override
public void run() {
try {
while (!hasWinner) {
if (rabbit_walk % 20 == 0 && (rabbit_walk != 0||rabbit_walk》=finish)) { //兔子每20米休息500毫秒
System.out.println(“兔子休息中………………“);
Thread.sleep(500);
}
rabbit_walk=rabbit_walk+5; //每秒跑5步
System.out.println(“兔子已跑“+rabbit_walk+“米“);
}

} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
@Override
public void run(){
new Thread(new Rabbit_Run()).start();
new Thread(new Tortoise_Run()).start();
}
/**
* @Title: main
* @Description: TODO(
* 赛程1000米,兔子跑5米,乌龟跑1米,兔子每20米休息500毫秒,乌龟每100米休息500毫秒。谁先到终点就结束程序
* ,并显示获胜方。)
* @param @param args
* @param @throws Exception 设定文件
* @author guotingchao
* @return void 返回类型
* @throws
*/
public static void main(String args) throws Exception {
long temp_actionTime=System.currentTimeMillis();
System.out.println(“比赛开始:“+new Date(temp_actionTime)+“毫秒“);
Test t=new Test();
new Thread(t).start();
while(true){
if(t.tortoise_walk》=t.finish||t.rabbit_walk》=t.finish){
t.hasWinner=true;
break;
}
}
String winnnerName=t.tortoise_walk》t.rabbit_walk?“乌龟“:“兔子“;
long temp_lastTime=System.currentTimeMillis();
System.out.println(winnnerName+“胜利“);
System.out.println(“比赛结束:“+new Date(temp_lastTime)+“毫秒“);
System.out.println(“所耗时间:“+(temp_lastTime-temp_actionTime)+“毫秒“);
System.out.println(“兔子=“+t.rabbit_walk+“ 乌龟=“+t.tortoise_walk);
}
}
//不知道兔子和乌龟的步长时间是否按每秒。 这里程序只考虑依次递增频率

以上就是我们为大家找到的有关“java多线程龟兔赛跑(JAVA的程序设计,设计一个龟兔赛跑的线程类模拟参与赛跑)”的所有内容了,希望可以帮助到你。如果对我们网站的其他内容感兴趣请持续关注本站。

java多线程龟兔赛跑(JAVA的程序设计,设计一个龟兔赛跑的线程类模拟参与赛跑)

本文编辑:admin

更多文章:


turtles歌曲(哪位大神有turtles(乌龟组合)的<谢谢>的歌词中文翻译 感激不尽)

turtles歌曲(哪位大神有turtles(乌龟组合)的<谢谢>的歌词中文翻译 感激不尽)

“turtles歌曲”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看turtles歌曲(哪位大神有turtles(乌龟组合)的的歌词中文翻译 感激不尽)!

2026年10月11日 10:00

java转义字符(java中的转义字符的作用是什么)

java转义字符(java中的转义字符的作用是什么)

其实java转义字符的问题并不复杂,但是又很多的朋友都不太了解java中的转义字符的作用是什么,因此呢,今天小编就来为大家分享java转义字符的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 09:40

金山铁路22号线(请问现在轨道交通22号线金山铁路是个什么情况据说9月28日就开通了啊~~~)

金山铁路22号线(请问现在轨道交通22号线金山铁路是个什么情况据说9月28日就开通了啊~~~)

“金山铁路22号线”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看金山铁路22号线(请问现在轨道交通22号线金山铁路是个什么情况据说9月28日就开通了啊~~~)!

2026年10月11日 09:10

repercussions(都是余波,repercussions和aftermath有什么区别啊)

repercussions(都是余波,repercussions和aftermath有什么区别啊)

今天给各位分享都是余波,repercussions和aftermath有什么区别啊的知识,其中也会对都是余波,repercussions和aftermath有什么区别啊进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月11日 09:00

dropdownlist 绑定(DropDownList 绑定所有项 并 显示指定项)

dropdownlist 绑定(DropDownList 绑定所有项 并 显示指定项)

本篇文章给大家谈谈dropdownlist 绑定,以及DropDownList 绑定所有项 并 显示指定项对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年10月11日 08:50

协方差计算公式(协方差的计算公式)

协方差计算公式(协方差的计算公式)

这篇文章给大家聊聊关于协方差计算公式,以及协方差的计算公式对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年10月11日 08:10

易语言网页api接口怎么调用(易语言,怎么读取网页json的api)

易语言网页api接口怎么调用(易语言,怎么读取网页json的api)

本篇文章给大家谈谈易语言网页api接口怎么调用,以及易语言,怎么读取网页json的api对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年10月11日 08:00

majority of(the majority of 和 a majority of的区别以及用法例句)

majority of(the majority of 和 a majority of的区别以及用法例句)

这篇文章给大家聊聊关于majority of,以及the majority of 和 a majority of的区别以及用法例句对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年10月11日 07:40

汉字机内码查询表(1个汉字的机内码是几位谢谢)

汉字机内码查询表(1个汉字的机内码是几位谢谢)

大家好,关于汉字机内码查询表很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于1个汉字的机内码是几位谢谢的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2026年10月11日 07:20

promote翻译(英语翻译倡导怎么说)

promote翻译(英语翻译倡导怎么说)

其实promote翻译的问题并不复杂,但是又很多的朋友都不太了解英语翻译倡导怎么说,因此呢,今天小编就来为大家分享promote翻译的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 06:30

最近更新

热门文章

标签列表