ScheduledThreadPoolExecutor не отправляет запланированные задачи при загрузке ЦП на 99 %.JAVA

Программисты JAVA общаются здесь
Anonymous
ScheduledThreadPoolExecutor не отправляет запланированные задачи при загрузке ЦП на 99 %.

Сообщение Anonymous »

В хорошо масштабируемом продукте я использую ScheduledThreadPoolExecutor для отправки отложенных событий, по одному на каждое входящее сообщение. Задержка составляет около 1 секунды.
При очень высокой загрузке процессора планировщик отправляет события с очень низкой скоростью. Несмотря на то, что в секунду должны отправляться сотни событий, он отправляет едва 10, иногда 1 или 2.
Это конфигурация

Код: Выделить всё

    private final ScheduledThreadPoolExecutor deliveryReceiptExecutorService =
new ScheduledThreadPoolExecutor(50, threadFactory);
Я предполагаю, что процессор настолько загружен, что потоки, обрабатывающие запланированные события, не имеют возможности запускаться.
Вопрос: можно ли кто-нибудь порекомендует лучший подход, чтобы гарантировать хотя бы некоторый баланс между входящими событиями и исходящими отложенными событиями? Судя по журналам класса планировщика, после часа работы процесса CompleteTaskCount равен 300k, а TaskCount равен 3M, в 10 раз больше.

Подробнее здесь: https://stackoverflow.com/questions/790 ... 9-cpu-load

Вернуться в «JAVA»