Я пытаюсь запланировать задачу, которая требует ~ 2,25 секунды для запуска каждую секунду. Таким образом, я знаю, что 3 потока должно быть достаточно для обработки нагрузки. Мой код выглядит так:
private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(4);
scheduler.scheduleAtFixedRate(new Streamer(), 0, 1000, TimeUnit.MILLISECONDS);
интересно, это ведет себя как запланированноеAtFixedDelay с задержкой 0 (потоки заканчиваются каждые ~ 2,25 секунды).
Я знаю, что scheduleAtFixedRate может опаздывать, если поток опаздывает. Но разве предоставление исполнителю большего пула потоков не должно решить эту проблему?
Я мог бы легко обойти проблему, запрограммировав 3 исполнителя для запуска каждые 3 секунды, но это сделало бы администрирование излишне сложным.
Есть ли более простое решение этой проблемы?