黑马程序员,黑马论坛-------- 线程生产者消费者

来源:互联网 发布:万网域名怎么转入 编辑:程序博客网 时间:2024/05/01 23:33

来源:黑马程序员,黑马论坛

 

在毕老师讲生产者消费者举得例子: 创建了4个线程:在讲解出现生产两个,消费一个的原因时,t1.t2,t3,t4
class Resource{
private String name;
private boolean flag = false;
private int count=1;
               // t1 t2
public synchronized void set(String name){
if(flag)
       try(this.wait();)catch(Exception e){}
this.name = name+"--"+count++;
System.out.println();
flag=true;
this.notify();
}
// t3 t4
public synchronized void out(String name){
if(!flag)
       try(this.wait();)catch(Exception e){}
this.name = name+"--"+count++;
System.out.println();
flag=true;
this.notify();
}
}
老师讲的是 t1 运行完set方法最后一句this.notify();,又循环判断if(flag) 条件为真,所以等待;
这里是if选择语句,怎么会循环?不是运行到最后一句就退出?这里又不是while循环

0 0