Мне было любопытно узнать о моей новой реализации с использованием ScheduledExecutorService, в которой ожидается, что задача завершится sh в течение периода 100 мс и задержки 0 мс. Но в случае, если есть нагрузка на систему и, скажем, 550 мс, будет ли очередь, поддерживаемая ScheduledExecutorService для тех, которые ожидают 4 задачи? И затем запустить, как только (задержка 0 мс) закончится первый. А что, если второе выполнение займет 560 мс, добавит ли это еще 4 потока в его очередь?
По этому поводу нет документации, или я мог бы это не заметить. Но я хочу убедиться, что скопление таких исполнений приведет к утечке или переполнению.
Например: приведенный ниже код может ли когда-нибудь выйти из строя основной поток?
private static ScheduledExecutorService consumerThreadPool = Executors.newSingleThreadScheduledExecutor();
public static void main(String[] args) throws Exception {
consumerThreadPool.scheduleAtFixedRate(() -> performTask(), 0, 1, TimeUnit.MILLISECONDS);
}
private static void performTask () {
try {
Thread.sleep(550);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}