1.要有赛道距离,我和终点越来越近
2.判断比赛是否结束
3.打印出胜利者
4.龟兔赛跑开始
5.模拟兔子睡觉
6.龟赢了
package Threads;
//模拟龟兔赛跑
public class RunQk implements Runnable {
//胜利者
private static String winncr;
public void run(){
//创建赛道的距离
for (int i=0;i<=100 ;i++ ){
//判断,让兔子休息
if(Thread.currentThread().getName().equals("兔")&&i%10==0){//当线程名称为兔时且每走10步,就让他休息
try {
Thread.sleep(10);
} catch(InterruptedException e) {
e.printStackTrace();
}
}else{
//判断比赛是否结束
boolean flag=gameOver(i);
if(flag){//flag=true,就结束程序
break;
}
System.out.println(Thread.currentThread().getName()+"---->跑了"+i+"步");
}
}
}
//判断游戏是否停止
private boolean gameOver(int sleps){//sleps:步数
//判断是否有胜利者
if(winncr!=null){//已经有胜利者
return true;
}{
if(sleps>=100){
winncr=Thread.currentThread().getName();//如果步数等于100,就得到这个线程的名字
System.out.println("胜者:"+winncr+"走了"+sleps);
return true;
}
}
//如果上面两个判断都没有执行就代表比赛未结束
return false;
}
public static void main(String[] args) {
//创建资源,也相当于是赛道
RunQk pf=new RunQk();
//创建两个线程,并命名,然后启动
new Thread(pf,"龟").start();
new Thread(pf,"兔").start();//让兔线程延时
}
}