- 911 名前:デフォルトの名無しさん [2009/11/20(金) 00:15:02 ]
- ある書籍のwait/notifyのメカニズムの問題で
正解が下記のようになってるんですが、 consumerメソッドでwaitの下の isFlag=falseがどうしても理解できません。 ここでfalseを代入してしまうと 上のproduceでisFlag=trueでnotifyを呼びだし waitを呼び起こしてもすぐにまたfalseになり いつまで経ってもwhileから抜け出せないと思うんですが・・・ 私の見解が間違っているんでしょうか? class MySync{ boolean isFlag = false; public synchronized void produce(){ isFlag = true; notify(); } public synchronized void consumer(){ while(!isFlag){ try{ wait(); isFlag = false; }catch(Exception e){} } } }
|

|