Java 条件变量和锁
具体考虑Java,假设我有lock对象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
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
。