我对 Java 的notify()
. 以下示例来自教科书。
public synchronized consume() {
while(queue.isEmpty()) {
try{ wait(); } catch (InterruptedException e) {}
}
// Assume that getElement() notifies to producers.
element = queue.getElement();
...
}
public synchronized produce() {
while(queue.isFull()) {
try{ wait(); } catch (InterruptedException e) {}
}
element = new Element();
...
queue.addElement(element);
notifyAll();
}
我很理解produce()
上面例子中的方法。但是,谁能告诉我为什么我们不在notifyAll()
第一种方法()的末尾使用consume()
?简而言之,为什么不这样:
public synchronized consume() {
while(queue.isEmpty()) {
try{ wait(); } catch (InterruptedException e) {}
}
// Assume that getElement() notifies to producers.
element = queue.getElement();
...
notifyAll();
}
非常感谢!
最好的祝福。