本帖最后由 杨兴庭 于 2013-7-22 21:26 编辑
两个while的{}加与不加有什么区别? 加上以后为什么执行结果不对呢- public class Resouse {
- //定义标记判断是否有盐
- private boolean flag = false;
-
- public synchronized void cook(){
- while(!flag)
- // { <font size="4">加与不加的区别</font>
- try {
- System.out.println("妈妈:没有盐了,儿子去买些盐");
- this.wait();//线程等待
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
-
- System.out.println("妈妈:盐买回来了,继续做饭");
- flag = false;//切换标记
- this.notifyAll();//唤醒所有线程
- }
- // }
- public synchronized void buySalt(){
-
- while(flag)
- // { <font size="4">加与不加的区别</font>
- try {
- this.wait();//线程等待
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
-
- System.out.println("儿子:好的,我马上去买盐");
- try {
- Thread.currentThread().sleep(1000);//线程休眠
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- System.out.println("儿子:妈妈,买回来了");
- flag = true;//切换标记
- this.notifyAll();//唤醒所有等待
- // }
- }
- }
复制代码 |