Домашняя работа, Java, Предотвращение тупиковой ситуации при использовании notify() вместо notifyAll() в модели multiProducer/singleConsumer
Поэтому я работаю над этим отчетом, и последним заданием является создание модели производителя / потребителя с n
Продюсеры и один потребитель, хитрость в том, что мне нужно заставить его работать notify()
вместо notifyAll()
в пут и получить методы.
Я полагаю, что просто оставить все как есть в методе get не проблема, так как есть только один потребитель, но мне сложно понять, как убедиться, что notify()
в методе put вызывается только потребительский поток, вместо того, чтобы разбудить другого производителя и вызвать тупик.
1 ответ
Вы не можете решить, кто проснется. Вот почему вам нужна дополнительная логика, поэтому, если будет уведомлен не тот поток, он будет знать, что он не должен работать, и notify()
другой поток (и повторноwait()
сам).