Обработка нескольких фьючерсов
У меня есть приложение, которое генерирует миллионы событий и отправляет эти события на сервер и получает фьючерсы для каждого события. Чтобы предотвратить нехватку памяти в приложении, я поместил эти фьючерсы в ArrayBlockingQueue
и эта очередь обрабатывается другим потоком. Мое приложение отправляет эти события быстрее, чем оно может обработать эти фьючерсы, и, следовательно, приложение немного замедляется.
Каков наилучший способ справиться с этими фьючерсами?
1 ответ
Не зная, что вам нужно в приложении, трудно предложить совет по производительности.
Возможно, вы могли бы ускорить потребление, если бы вы использовали более одного потока через фиксированный пул потоков с тщательно выбранным максимальным номером потока (неограниченный исполнитель потоков также замедлял бы ваше приложение).
Еще один способ переосмыслить структуру приложения. Например, во время потребления фьючерса есть какой-либо процесс, который можно реорганизовать, чтобы сделать позже.
Некоторые примеры кода помогут дать более конкретный совет.