A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马