Java ScheduledExecutorService.scheduleWithFixedDelay запускает новый поток для выполнения задачи, не дожидаясь завершения 1-й задачи - PullRequest
0 голосов
/ 27 марта 2019

Я пишу кусок кода, где мне нужно периодически планировать Runnable.Я использую ScheduledExecutorService.scheduleWithFixedDelay с начальной задержкой 0 и задержкой 2 минуты.В этом SchedulerService есть только задача.Я ожидаю, что второе выполнение задания начнется через 2 минуты после завершения первого выполнения задания.Чтобы проверить это, я запустил свое приложение в режиме отладки и установил точку останова в начале запускаемой задачи.Первое выполнение останавливается в точке останова, и поток, выполняющий задачу, переходит в состояние ожидания.К моему полному удивлению, через 2 минуты после начала 1-го выполнения задачи SchedulerService запускает новый поток для выполнения 2-го выполнения задачи.Я ожидал, что если 1-е выполнение не завершится, ScheduledExecutorService.scheduleWithFixedDelay не запустит 2-е выполнение.Пожалуйста, помогите мне понять это поведение, так как это противоречит объяснению Javadoc этого метода.

1 Ответ

0 голосов
/ 27 марта 2019

Количество потоков контролируется. Однопоточный исполнитель может быть инициирован. ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor ();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...