package ch12;
public class race implements Runnable{
private static String winner; // 胜利者名字
private static Integer rice=100; // 跑道长度
@Override
public void run() {
// 获取目前线程的名字
String user= Thread.currentThread().getName();
for (int i = 1; i <= rice;) {
System.out.println(user+"-----正在跑第 "+i+" 步");
if(win(i)){
break;
}
if (user.equals("兔子")){
// 模拟兔子进行睡觉
if (i%40==0){
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
// 模拟兔子速度为 5
i+=5;
}
if(user.equals("乌龟")){
// 模拟乌龟速度为 1
i++;
}
}
}
public boolean win(int step){
// 线程结束条件
if (winner!=null){
return true;
}
// 获取胜利者名字
if (step >= rice){
winner = Thread.currentThread().getName();
System.out.println("winner is " + winner);
return true;
}
return false;
}
public static void main(String[] args) {
race user = new race();
// 开启两条线程
new Thread(user,"兔子").start();
new Thread(user,"乌龟").start();
}
}