龟兔赛跑
100米两条线程 一个乌龟 一个兔子
如果是兔子的话设置延迟函数
当有一方胜出 马上跳出循环 ==>比赛终止
package Lesson_Thread;
public class Race implements Runnable {
private static String winner;
@Override
public void run() { //开始跑步 100米
for (int i = 0; i <=100; i++) {
boolean flag = finish(i); //接受”胜利者“返回的布尔类型 一有胜利者 马上跳出循环
if(flag){
break;
}
if(Thread.currentThread().getName()=="兔子" && i%50==0){ //兔子睡觉
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(Thread.currentThread().getName()+"跑了第"+i+"步");
}
}
public boolean finish(int step){ //判断是否有胜利者
if(winner!=null){ //有且只有一个胜利者
return true;
}
if(step>=100){ //判断胜利者
winner=Thread.currentThread().getName();
System.out.println("winner is "+winner);
return true;
}
return false;
}
public static void main(String[] args) {
Race race = new Race(); //开启多线程
new Thread(race,"兔子").start(); //在Thread中传入Runable并调用start方法
new Thread(race,"乌龟").start();
}
}