public class Race implements Runnable{
private static String winner;
@Override
public void run() {
for (int i = 0; i <= 200; i++) {
if(Thread.currentThread().getName().equals("兔子") && i%10 == 0) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if(Thread.currentThread().getName().equals("乌龟") && i%5 == 0) {
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
boolean flag = gameOver(i);
if(flag == true){
break;
}
System.out.println(Thread.currentThread().getName()+"跑了第"+i+"步");
}
}
public boolean gameOver(int i){
if(winner != null){
return true;
}{
if(i == 100){
winner = Thread.currentThread().getName();
System.out.println("winner is:"+winner);
return true;
}
}
return false;
}
public static void main(String[] args) {
Race r1 = new Race();
Race r2 = new Race();
new Thread(r1,"兔子").start();
new Thread(r2,"乌龟").start();
}
}
...
...
...
乌龟跑了第97步
乌龟跑了第98步
乌龟跑了第99步
winner is:乌龟