У меня есть код с использованием шаблона производителя и потребителя. Где производитель создает некоторые объекты данных, помещает их в блокирующую очередь, потребитель потребляет из процесса очереди объекты данных и отправляет их в другой класс.Java Threading в шаблоне производителя
Производитель -> Очередь блокирования (объект данных) < - Потребитель -> Parser -> другое приложение
Теперь скорость, с которой производитель производит, может варьироваться, что означает, что объект данных, находящийся в очереди, может меняться.
Обработать все данные Объект из очереди, которую потребитель должен запускать в потоках.
Теперь мое требование заключается в том, что существует огромное количество объектов данных, находящихся в очереди. Я увеличиваю потребительские потоки до предопределенного числа, так что объекты обработки данных обрабатываются вовремя, но когда меньше очереди данных/данных в очереди уменьшено, я хочу уменьшить потоки.
Вкратце я хочу изменить количество потоков в зависимости от размера очереди. Каким образом я могу достичь этого.
Что вы узнали в ваших исследованиях? Какие варианты вы уже опробовали? С какими результатами? Были ли у вас проблемы с реализацией (в таком случае, задать конкретные вопросы о вашей реализации) или результат не удовлетворил вас? – brimborium
Рассмотрите возможность использования 'java.util.concurrentThreadPoolExecutor' вместо использования явно созданной очереди и явно созданных потоков. 'ThreadPoolExecutor' автоматически настраивает количество рабочих потоков между заданным' corePoolSize' и заданным 'maximumPoolSize'. –
Работает с использованием java.util.concurrentThreadPoolExecutor – Avishek