Kennan Wang 2017-10-16 09:22 采纳率: 6.7%
浏览 2399

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条回答

  • 安小菜 2017-10-16 09:53
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大