Я немного смущен Java notify()
. Следующий пример из учебника.Java Thread notify() vs. notifyAll()
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();
}
Спасибо большое!
С уважением.
Большое спасибо, Серый. :-) –