龟兔赛跑多线程程序java
时间: 2024-05-28 10:06:48 浏览: 179
龟兔赛跑是一个经典的多线程问题,它可以用来展示多线程的基本概念和原理。在这个问题中,龟兔两个角色同时在赛道上奔跑,龟速度慢但坚持不懈,兔速度快但容易骄傲自满。我们可以通过多线程技术来实现这个问题,让龟和兔各自成为一个线程,同时在赛道上奔跑。
Java中实现多线程有两种方式:
1. 继承Thread类并重写run()方法
2. 实现Runnable接口,并实现其run()方法
下面是一个简单的龟兔赛跑多线程程序的Java实现示例:
```java
public class TortoiseAndHare implements Runnable {
private String winner = null;
@Override
public void run() {
for (int i = 1; i <= 100; i++) {
// 判断是否有胜者
if (Thread.currentThread().getName().equals("兔子") && i % 10 == 0) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(Thread.currentThread().getName() + "跑了" + i + "步");
// 判断是否有胜者
if (this.isWinner(i)) {
break;
}
}
}
private boolean isWinner(int steps) {
if (winner != null) { // 已经有胜者了
return true;
}
if (steps == 100) { // 判断是否已经到终点
winner = Thread.currentThread().getName();
System.out.println("胜利者是:" + winner);
return true;
}
return false;
}
public static void main(String[] args) {
TortoiseAndHare race = new TortoiseAndHare();
Thread tortoise = new Thread(race, "乌龟");
Thread hare = new Thread(race, "兔子");
tortoise.start();
hare.start();
}
}
```
这个程序中,我们实现了Runnable接口,并在run()方法中写下了每个角色的跑步逻辑,同时在isWinner()方法中判断是否有胜者出现。在main()方法中,我们创建了两个线程分别代表龟和兔,并调用start()方法启动线程。
阅读全文