package com.lin_test;
//乌龟和兔子的跑道
public class Race implements Runnable {
//声明一个变量
public static String winner;
@Override
public void run() {
//描述步数
for(int x=1;x<=100;x++) {
//x表示步数
//模拟兔子睡觉
if(Thread.currentThread().getName().equals("兔子") &&(x%10==0)) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//定义一个比赛是否结束的方法
boolean flag=gameOyer(x);
if(flag) {
break;//有胜利者比赛结束
}
System.out.println(Thread.currentThread().getName()+"跑了"+x+"步");
}
}
//判断比赛是否结束
private boolean gameOyer(int steps) {
//情况1:如果已经存在胜利者,比赛结束
if(winner!=null) {
return true;
}{
//情况2:如果步数大于等于100,比赛结束
if(steps>=100) {
//记录一下胜利者:(获取线程名程)
winner=Thread.currentThread().getName();
System.out.println("winner:"+winner);
return true;
}
}
return false;
}
public static void main(String[] args) {
//创建Race对象
Race r=new Race();
//创建两个线程
Thread t1=new Thread(r,"兔子");
Thread t2=new Thread(r,"乌龟");
//启动线程
t1.start();
t2.start();
}
}