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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 段金福 中级黑马   /  2014-8-6 09:53  /  1163 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public synchronized void set (String name)
   {   
        if(flag)
              try { this.wait() }catch(Expception e){};
             this.name=name;+"...."+count++;
             system.out.println() (Threa.currentThread()getName())+"....生产者...+this.name");
              flag=true;
              this.notify();
    }
     要求大概是 ,一个生产者,一个消费者,生产一个 消费一个,,后面改为 2个生产者 ,2个消费者, 直接添加2个线程的话,是会出问题的。老师就把 if 改为 while  ,notifyAll();

我的问题: 线程wait() 之后被.notify() 是继续执行wait()  后面的语句, 为什么改为while之后,被notify()返回去判断while()里面的条件,按理来说,应该也是继续往下执行的 。

点评

你再回想一下while循环语句的功能特点  发表于 2014-8-6 10:38

3 个回复

倒序浏览
就没人知道么 :'(
回复 使用道具 举报
while的是只要是成立就会执行,执行完代码块中的代码,就再此判断条件是否成立。若成立继续执行代码块,不成立执行代码块以外的。while本身就是这个样子。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马