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

© 流沙 中级黑马   /  2014-5-20 09:37  /  1188 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 流沙 于 2014-5-20 12:04 编辑

在多线程的时候,多线程在while循环体中被wait了,”当它线程池中被唤醒了仍然在循环体中“为什么不是直接在循环体中继续往下走,而是返回去判断了一下条件?????
while:先判断条件,只要条件满足才执行循环体。是这句话的就不需要了!!!

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

2 个回复

倒序浏览
  1. public synchronized void set(String name)
  2.         {
  3.                 while(flag)
  4.                         try{this.wait();}catch(Exception e){}//t1(放弃资格)  t2(获取资格)
  5.                 this.name = name+"--"+count++;

  6.                 System.out.println(Thread.currentThread().getName()+"...生产者.."+this.name);
  7.                 flag = true;
  8.                 this.notifyAll();
  9.         }
复制代码

比如这段代码,你有没有注意到while(flag)循环没有大括号?其实这个循环体就下面那一句话,和if不加大括号是一样道理

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
gentleman 发表于 2014-5-20 11:46
比如这段代码,你有没有注意到while(flag)循环没有大括号?其实这个循环体就下面那一句话,和if不加大括号 ...

哈哈!看到了!之前没注意!以为下面代码全是大括号里边的!后来才看到循环的只有一句话哈哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马