2015-10-22 3 views
0

У меня есть код с использованием шаблона производителя и потребителя. Где производитель создает некоторые объекты данных, помещает их в блокирующую очередь, потребитель потребляет из процесса очереди объекты данных и отправляет их в другой класс.Java Threading в шаблоне производителя

Производитель -> Очередь блокирования (объект данных) < - Потребитель -> Parser -> другое приложение

Теперь скорость, с которой производитель производит, может варьироваться, что означает, что объект данных, находящийся в очереди, может меняться.

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

Теперь мое требование заключается в том, что существует огромное количество объектов данных, находящихся в очереди. Я увеличиваю потребительские потоки до предопределенного числа, так что объекты обработки данных обрабатываются вовремя, но когда меньше очереди данных/данных в очереди уменьшено, я хочу уменьшить потоки.

Вкратце я хочу изменить количество потоков в зависимости от размера очереди. Каким образом я могу достичь этого.

+1

Что вы узнали в ваших исследованиях? Какие варианты вы уже опробовали? С какими результатами? Были ли у вас проблемы с реализацией (в таком случае, задать конкретные вопросы о вашей реализации) или результат не удовлетворил вас? – brimborium

+1

Рассмотрите возможность использования 'java.util.concurrentThreadPoolExecutor' вместо использования явно созданной очереди и явно созданных потоков. 'ThreadPoolExecutor' автоматически настраивает количество рабочих потоков между заданным' corePoolSize' и заданным 'maximumPoolSize'. –

+0

Работает с использованием java.util.concurrentThreadPoolExecutor – Avishek

ответ

0

Работали Использование java.util.concurrentThreadPoolExecutor