龟兔赛跑问题 模拟龟兔竞争冠军 兔子睡觉过程。
以下是代码:
public class Race implements Runnable{
private static String winner;
@Override
public void run() {
for (int i = 0; i <= 100; i++) {
if (Thread.currentThread().getName().equals("兔子")){
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if (winner!=null){
break;}
if (i==100){
winner=Thread.currentThread().getName();
System.out.println("winner is " +Thread.currentThread().getName());
}
System.out.println(Thread.currentThread().getName()+"跑了"+i+"步");
}
}
public static void main(String[] args) {
Race race=new Race();
Thread t=new Thread(race,"乌龟");
Thread r=new Thread(race,"兔子");
t.start();
r.start();
}
}
解析:
在run方法中判断当前线程是否是兔子线程,如果是则睡眠100毫秒。
在循环里判断是否已有winner 如果有winner则跳出循环结束线程。
当某一线程跑到一百步时,将该线程设置为winner。这是其他线程经过判断winner是否存在而界定是否停止。