黑马程序员技术交流社区

标题: 线程通信时候一个问题,求解惑 [打印本页]

作者: 插兜    时间: 2015-9-17 15:49
标题: 线程通信时候一个问题,求解惑
在做线程通信练习时候,有个生产者消费者的例子。在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.         }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2