当前位置: 代码迷 >> J2SE >> 急帮忙看下这题,究竟哪种正确?
  详细解决方案

急帮忙看下这题,究竟哪种正确?

热度:292   发布时间:2016-04-24 17:09:43.0
急,急,帮忙看下这题,到底哪种正确??
[code]public   class   Flags2   {
    private   boolean   isReady   =   false;
    public   synchronized   void   produce()   {
        isReady   =   true;
        notifyAll();
    }
    public   synchronized   void   consume()   {
        while(!isReady)   {
          try   {
                wait();
              }catch(Exception   ex)   {}
        }
        isReay   =   true;
    }
}[/code]

[code]public   class   Flags2   {
    private   boolean   isReady   =   false;
    public   synchronized   void   produce()   {
        isReady   =   true;
        notifyAll();
    }
    public   synchronized   void   consume()   {
        while(!isReady)   {
          try   {
                wait();
              }catch(Exception   ex)   {}
        }
        isReay   =   false;
    }
}[/code]

两段代码,最后一句   isReady   =   true;   或者   isReady   =   false;都可以编译,那么到底应该是isReady   =   ture还是isReady   =   false呢??为什么?

------解决方案--------------------
看你想干啥啊
------解决方案--------------------
我感觉是ture,多线程方面的问题吧.
while(!isReady)就是要!isReady 为真,则isReady 为假,才进入循环,isReay = true;退出循环
------解决方案--------------------

false
producer and consumer
[code]public class Flags2 {
private boolean isReady = false;
public synchronized void produce() {
isReady = true; //生产者产生食物
notifyAll(); //通知消费者消耗食物
}
public synchronized void consume() {
while(!isReady) { //食物不存在
try {
wait(); //消费者等待食物产生
}catch(Exception ex) {}
}
isReay = false; //消费者消耗掉食物
}
}[/code
  相关解决方案