在毕老师讲生产者消费者举得例子: 创建了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循环 |
|