正在自学java,在多线程部分看到Lock与Condition部分的内容,有点不明白。
Condition producer_con = lock.newCondition();
Condition consumer_con = lock.newCondition();
public void set(String name)
{
lock.lock();
try
{
while(flag) //若有烤鸭,就不生产
try{producer_con.await();}catch(InterruptedException e){}
this.name = name + count;
count++;
System.out.println(Thread.currentThread().getName()+"...生产者..."+this.name);
flag = true;
consumer_con.signal();
}
finally
{lock.unlock();}
}
我不明白,Condition对象与线程是怎么绑定的?难道是,某个线程是由哪个Condition对象调用await()阻塞的,就由哪个Condition对象唤醒?那么因为没有获取锁而自动阻塞的线程又怎么解释?