利用多线程模拟龟兔赛跑,乌龟一直跑,兔子跑十步停一下,任何一个跑完100步即获胜,比赛结束
思路:开启两个线程,一个兔子跑,一个乌龟跑,兔子的线程要设置一个条件,10步一停,然后就是结束条件,一个跑完比赛结束,所以要用在一个方法体中比赛,同时要有一个判定结束的条件。
public class Thread05 implements Runnable{
String name=null; //记录获胜者的名字
@Override
public void run() {
for(int i=1;i<=100;i++) { //跑100步结束
//当线程名是兔子时,并且跑了10步时,休眠1ms
if("兔子".equals(Thread.currentThread().getName()) && i%10==0) {
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//看谁在跑第几步
System.out.println(Thread.currentThread().getName()+"在跑第"+i+"步");
//调用方法判断比赛结束的依据,只要任意一方到到100,即结束
boolean flag=over(i);
if(flag) {
break;
}
}
}
public boolean over(int i) {
//名字已经有人了,返回true,线程结束
if(name!=null) {
return true;
}else if(i==100) { //步数到100,设置获胜者名字等于线程名,结束线程
name=Thread.currentThread().getName();
return true;
}
return false;
}
public static void main(String[] args) {
//开启两个线程,各自起名
Thread05 th=new Thread05();
Thread th1=new Thread(th,"兔子");
Thread th2=new Thread(th,"乌龟");
th1.start();
th2.start();
}
}