我声明了一个 Condition 类型的变量:
private Condition waitingCond;
然后,在Bridge
I 的构造函数中声明一个与同一变量关联的条件变量:
waitingCond = lock.NewCondition();
然后在阻塞方法中,我有这个:
public void getIn(int direction) throws InterruptedException{
lock.lock();
try{
if(direction == Car.DIR_NORTH){
while((nSudWaiting>0))
waitingCond.await();
nNordWaiting++;
//...............
} else {
//............
} waitingCond.signal();
}
finally{
lock.unlock()
}
}
问题:
我在这里说得对吗,方法 await 意味着释放锁?
waitingCond.await(); // waiting release lock
如果我上面所说的是正确的,那么下面的语句是否再次启用了锁(线程持有锁)?
waitingCond.await(); // waiting release lock
nNordWaiting++; // getting back the lock
我想了解的是:下面的任何语句waitingCond.await();
都可以重新获取锁?
非常感谢。