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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郑飞 高级黑马   /  2014-6-26 17:57  /  695 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 郑飞 于 2014-6-26 18:00 编辑

谁能解释下为什么啊 while到底怎么执行的

public synchronized void set()
{
  while(flag)
         try
        {
         this.wait();      //视频中老师说从这里被唤醒的线程会回到上一步while中判断后在执行,
                               //这一步不是已经过了while判断语句了么,被唤醒不是要往下执行么?
        }
        catch (Exception e)
       {
       }
   count++;
   System.out.println(Thread.currentThread().getName()+"生产者"+this.name+count);
   flag = true;
   notifyAll();
}

3 个回复

倒序浏览
本帖最后由 执笔梦 于 2014-6-26 18:49 编辑

while(flag)大哥,这是while();
         try
        {
         this.wait();      比如你来到这里停了,那下面的的输出语句还没执行吧,下次你开始执行的时候,你要执行           输出吧,输出完了,while执行完了,是不是还要从头判断一次呢?
             System.out.println("runing?");
         }
}
如果是if()执行完了就不会再判断了
回复 使用道具 举报
while循环只有在while循环条件不满足的时候才停止,与其他的结束不结束没关系
回复 使用道具 举报
如果满足while则执行while里面的语句,不满足就不执行里面的语句。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马