Конкретно думая о Java, скажем, у меня есть объект блокировки
Lock lock = new ReentrantLock();
Condition cond = aLock.newCondition();
public void a(){
lock.lock();
while(available == false){
//available is some boolean from somewhere
cond.await();
}
cond.signal();
lock.unlock();
}
Я не понимаю, как это работает. Если я звоню cond.await()
, находясь внутри void a()
, то также звоню cond.signal()
внутри того же void a()
, как я получу уведомление в void a()
? Я хочу сказать, что если signal
после цикла, как я когда-либо прерву его? Это похоже на бесконечную ситуацию.
Я скопировал этот код откуда-то, поэтому я и спрашиваю. Спасибо