Насколько я понимаю, шаблон «производитель-потребитель» может быть реализован с использованием очереди, совместно используемой производителем и потребителем. Производитель отправляет работу в общую очередь, потребитель извлекает ее и обрабатывает. Это также может быть реализовано производителем, напрямую подчиняющимся потребителю (потоки производителя напрямую отправляются в службу исполнителя Consumer).
Теперь я рассмотрел класс Executors, который предоставляет некоторые общие реализации пулов потоков. Метод newFixedThreadPool, согласно спецификации, «повторно использует фиксированное количество потоков, работающих в общей неограниченной очереди». О какой очереди здесь идет речь?
Если производитель напрямую отправляет задачу потребителю, это внутренняя очередь ExecutorService, содержащая список Runnables?
Или это промежуточная очередь, на случай, если производитель отправляет в общую очередь?
Может быть, мне не хватает всего, но не мог бы кто-нибудь пояснить?