Лучший способ реализовать шаблон множественного производителя / потребителя в Java 6 - PullRequest
5 голосов
/ 08 ноября 2011

Итак, у меня есть несколько этапов: этап 1 -> этап 2 -> этап 3 -> этап 4, поэтому в некоторых случаях производитель будет потребителем, и на каждом этапе есть несколько производителей / потребителей, которые могут использовать несколько процессоров.В случае повторного запуска некоторые пакеты пропустят шаги, то есть перейдут прямо от этапа 1 к этапу 4.

Так что я собирался иметь класс для каждого этапа, разделяя BlockingQueue с предыдущим этапом, но я также прочиталчто ExecutorService работает как шаблон Производитель / Потребитель все в одном, поэтому я пытаюсь использовать лучшую абстракцию.

Однако мне кажется, что при использовании Executor бит производителя делается до того, как они будут отправленыпоследовательно исполнителю, а это не то, что я хочу.

Может кто-нибудь уточнить, пожалуйста?

Ответы [ 2 ]

1 голос
/ 08 ноября 2011

Похоже, вам нужно java.util.concurrent.CompletionService для каждой стадии, вместо BlockingQueue.

1 голос
/ 08 ноября 2011

Посмотрите на Исполнителей и пулы потоков.Вот официальный урок: http://download.oracle.com/javase/tutorial/essential/concurrency/

...