龟兔赛跑我们可以看成两个线程并发执行,我们可以通过让其中一个线程 “睡觉” 来实现 “操盘”,下面让我们看一下代码如何实现:
public class TestThread implements Runnable{
static String winner;
@Override
public void run(){
//定义一条“跑道”
for (int i = 1; i <= 1000; i++) {
//让兔子睡觉的条件
if(i%500==0&&Thread.currentThread().getName().equals("兔子")){
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
boolean flag = gameOver(i);
if(flag){
break;
}
System.out.println(Thread.currentThread().getName()+"跑了"+i+"步");
}
}
//定义一个方法判断是否已经产生了冠军
private boolean gameOver(int step) {
if(winner!=null){
return true;
}if (step>=1000){
winner=Thread.currentThread().getName();
System.out.println("----Game Over----");
System.out.println("胜利者是"+winner);
return true;
}
return false;
}
public static void main(String[] args) {
TestThread testThread = new TestThread();
new Thread(testThread,"兔子").start();
new Thread(testThread,"乌龟").start();
}
}
代码的运行结果为:
因为中途我们设置的让兔子睡觉,所以,结果是乌龟胜利。