使用java多线程编程一个龟兔赛跑的程序
时间: 2024-01-22 21:18:48 浏览: 81
以下是使用Java多线程编写龟兔赛跑程序的示例代码:
```java
public class Race {
public static void main(String[] args) {
// 创建两只动物
Animal rabbit = new Animal("兔子", 10);
Animal tortoise = new Animal("乌龟", 5);
// 启动两只动物的线程
rabbit.start();
tortoise.start();
// 等待两只动物的线程执行完毕
try {
rabbit.join();
tortoise.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
// 判断比赛结果
if (rabbit.getPosition() >= 100 && tortoise.getPosition() >= 100) {
System.out.println("平局!");
} else if (rabbit.getPosition() >= 100) {
System.out.println("兔子获胜!");
} else {
System.out.println("乌龟获胜!");
}
}
}
class Animal extends Thread {
private String name; // 动物名称
private int speed; // 动物速度
private int position; // 动物位置
public Animal(String name, int speed) {
this.name = name;
this.speed = speed;
}
public int getPosition() {
return position;
}
public void run() {
System.out.println(name + "开始起跑!");
// 动物开始赛跑,每隔一段时间更新一次位置
while (position < 100) {
try {
Thread.sleep(100); // 线程休眠一段时间
} catch (InterruptedException e) {
e.printStackTrace();
}
int distance = speed; // 计算动物本次移动的距离
if ("兔子".equals(name)) { // 如果是兔子,则有一定几率停下来休息
if (Math.random() < 0.2) {
System.out.println("兔子在路边睡觉!");
distance = 0;
}
}
position += distance; // 更新动物位置
System.out.println(name + "已经跑了" + position + "米!");
}
System.out.println(name + "已经到达终点!");
}
}
```
在这个示例代码中,我们创建了一个 `Race` 类和一个 `Animal` 类。`Race` 类是程序的入口,它创建两只动物(兔子和乌龟),并启动它们的线程。`Animal` 类表示一个动物,它有三个属性:名称、速度和位置。它有一个 `run()` 方法,表示动物线程的执行逻辑。在 `run()` 方法中,动物每隔一段时间更新一次位置,当有一只动物到达终点时,比赛结束,并输出比赛结果。
需要注意的是,在 `Animal` 类的 `run()` 方法中,我们使用了 `Thread.sleep()` 方法来模拟动物赛跑过程中的时间间隔。我们还使用了 `Math.random()` 方法来模拟兔子在路边睡觉的概率。这些细节的处理可以使程序更加逼真和有趣。
阅读全文