タイプ条件の変数を宣言しています:
private Condition waitingCond;
次に、I のコンストラクターでBridge
、同じ変数に関連付けられた条件変数を宣言します。
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();
はロックを再取得できるかということです。
どうもありがとう。