Идея модели производитель / потребитель состоит в том, чтобы отделить производителей от потребителей.Таким образом, ваше желание остановить производителя, когда потребитель мёртв, не согласуется с основной мотивацией модели производитель / потребитель.
Но если вам действительно нужно убить производителя, если очередь заполнена, то вместо queue.put()
, который блокируетнеограниченное время вы можете использовать queue.offer(E e, long timeout, TimeUnit unit)
, который будет ожидать тайм-аут, если очередь заполнена, и возвращать false
, если ему не удалось добавить элемент в очередь.Таким образом, в коде вашего производителя вы можете обработать этот возвращаемый результат.