使用线程模拟龟兔赛跑。 假设起点,距离终点为1000米。乌龟的速度是1米/秒,兔子的速度是2米/秒。兔子 在半路犯困睡了一会,时长为:n秒钟,试一试n为多少乌龟才能比兔子早到终点。用java语言实现,软件是idea
时间: 2024-02-26 14:58:51 浏览: 174
好的,我会尽力回答你的问题。以下是使用Java语言实现的线程模拟龟兔赛跑的代码:
```
public class Race {
public static void main(String[] args) {
Tortoise tortoise = new Tortoise();
Rabbit rabbit = new Rabbit();
tortoise.start();
rabbit.start();
}
}
class Tortoise extends Thread {
public void run() {
int distance = 1000;
int speed = 1;
int time = 0;
while (distance > 0) {
distance -= speed;
time++;
System.out.println("乌龟跑了" + time + "秒,还剩" + distance + "米");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("乌龟到达终点!");
}
}
class Rabbit extends Thread {
public void run() {
int distance = 1000;
int speed = 2;
int time = 0;
int sleepTime = 0; // 兔子睡觉的时间
while (distance > 0) {
if (sleepTime == 0) {
distance -= speed;
time++;
System.out.println("兔子跑了" + time + "秒,还剩" + distance + "米");
if (distance <= 0) {
System.out.println("兔子到达终点!");
}
} else {
sleepTime--;
System.out.println("兔子睡觉中,还有" + sleepTime + "秒...");
}
if (time == 5 && sleepTime == 0) { // 兔子跑了5秒后开始睡觉
sleepTime = 10;
System.out.println("兔子累了,开始睡觉...");
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
```
在上面的代码中,我们创建了两个线程,一个是乌龟线程 `Tortoise`,另一个是兔子线程 `Rabbit`。它们都重写了 `run()` 方法,用来模拟龟兔赛跑的过程。每个线程都有一个 `distance` 变量表示距离终点的距离,一个 `speed` 变量表示速度,一个 `time` 变量表示已经跑了多少秒。
乌龟线程不需要休息,每秒钟前进1米,直到到达终点。而兔子线程需要在跑了5秒后开始睡觉,睡觉的时间为10秒,然后再继续跑。在睡觉的过程中,兔子只是简单地打印出剩余的睡觉时间。
在 `main()` 方法中,我们创建了乌龟和兔子的实例,并调用它们的 `start()` 方法来启动线程。
你可以尝试不同的睡觉时间 `n`,看看乌龟能否比兔子早到达终点。
阅读全文