这里模拟一下龟兔赛跑问题,首先给出的是乌龟和兔子类,里面含有run方法。
乌龟
public class Tortoise implements Runnable {
private int totalStep;
private int step;
public Tortoise(int totalStep) {
this.totalStep = totalStep;
}
@Override
public void run() {
while (step < totalStep) {
step++;
System.out.printf("乌龟跑了 %d 步%n", step);
}
}
}
兔子
public class Hare implements Runnable {
private boolean[] flags = {true, false};
private int totalStep;
private int step;
public Hare(int totalStep) {
this.totalStep = totalStep;
}
@Override
public void run() {
while (step < totalStep) {
boolean isHareSleep = flags[(int) (Math.random() * 10 % 2)];
if (isHareSleep) {
System.out.println("兔子睡着了~");
} else {
step += 2;
System.out.printf("兔子跑了 %d 步%n", step);
}
}
}
}
测试主类
public class Main {
public static void main(String[] args) {
Tortoise tortoise = new Tortoise(10);
Hare hare = new Hare(10);
new Thread(tortoise).start();
new Thread(hare).start();
}
}
输出结果
乌龟跑了 1 步
乌龟跑了 2 步
兔子睡着了~
乌龟跑了 3 步
兔子跑了 2 步
乌龟跑了 4 步
乌龟跑了 5 步
乌龟跑了 6 步
乌龟跑了 7 步
乌龟跑了 8 步
乌龟跑了 9 步
兔子睡着了~
兔子跑了 4 步
兔子睡着了~
兔子跑了 6 步
兔子跑了 8 步
兔子睡着了~
兔子睡着了~
兔子跑了 10 步
乌龟跑了 10 步