在做线程通信练习时候,有个生产者消费者的例子。在if语句之后,我加了个else{},然后验证时候,结果一直都是Thread0线程的输出。
我想问下,如果if后面跟上else,是不是后面的flag=true和this.notify就不会再读,继续while循环,flag仍然是false。
- private String name;
- private int count=1;
- private boolean flag=false;
- public synchronized void set(String name)
- {
- while(true)
- {
- if(flag)
- try{this.wait();}catch(Exception e){}
- else
- {
- this.name=name+"--"+count++;
- System.out.println(Thread.currentThread().getName()+"...生产者..."+this.name);
- }
- flag=true;
- this.notify();
- }
- }
复制代码 |
|