Java多线程龟兔赛跑问题

public class RabbitAndTurtle extends Thread{
public int num;
public static boolean flag = false;
public RabbitAndTurtle(String name){
super(name);
}
public void run(){
while(num if(flag){
break;
}
if(Thread.currentThread().getName().equals("rabbit")&&Math.random() num = num+2;
System.out.println(Thread.currentThread().getName()+"跑了"+num+"米");
}else if(Thread.currentThread().getName().equals("turtle")&&Math.random()>0.3){
num = num+1;
System.out.println(Thread.currentThread().getName()+"跑了"+num+"米");
}else{
Thread.yield();
}
}
//System.out.println("over");
if(!flag){
flag = true;
System.out.println(Thread.currentThread().getName()+"win!");
}

}

}
class Race{
public static void main(String[] args) {
RabbitAndTurtle t1 = new RabbitAndTurtle("turtle");
RabbitAndTurtle t2 = new RabbitAndTurtle("rabbit");
t1.start();
t2.start();
}
}
用了两次flag判断有什么用 麻烦详细一些 谢谢

2个回答

flag用于跳出while循环。
flag=false,是静态的。所以龟和兔共用一个flag。

```while(num if(flag){
break;
}



Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问