Java 条件变量和锁

Java 条件变量和锁,java,multithreading,concurrency,operating-system,locking,Java,Multithreading,Concurrency,Operating System,Locking,具体考虑Java,假设我有lock对象 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.un

具体考虑Java,假设我有lock对象

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();
}
我不明白这是怎么回事。如果我在
void a()
内部调用
cond.await()
,然后在同一
void a()
内部调用
cond.signal()
,我将如何在
void a()
中得到通知?我的意思是说,如果
信号
在循环之后,我将如何打破循环。这似乎是一种无限的情况


我从某个地方复制了这段代码,所以我才这么问。谢谢

其他一些方法可能会调用cond.singal()来从cond.await()中获取一个()并且当可用时,a()可以从await()中发出另一个方法的信号。你读过文档了吗?@user1803551,是的,但我很困惑,这就是为什么我在这里问这个问题,但它确切地说明了它是如何工作的:
cond.singal()
是从其他地方调用的。@user1803551,是的,我看到了,但是我被另一个例子弄糊涂了,这个例子在同一个函数中有
signal