У меня есть вопрос по поводу метода scheduleAtFixedRate () в ScheduledExecutorService в Java 6.
[ edit : Javadoc для 1.6 является более полным, чем для 1.5. Смотрите комментарий ниже]
Учитывая, что:
- Служба ScheduledExecutorService создается с потоком N = 1 в пуле
- Фиксированная ставка - это период Т секунд
- без начальной задержки
Что происходит в этом случае (времена не должны быть абсолютными в смысле реального времени):
- в момент времени T служба запускает запускаемую задачу "task1"
- в момент времени 2T, задание 1 еще не выполнено, и служба запланирована к запуску
Сервис гарантированно выполняет любое из следующих действий?
- (а) в 2T, запустить Runnable задачу, "task2" (вспомним N = 1)
- (b) блок до завершения задачи 1
- (c) пропустите это время и попробуйте снова в 3T
- (d) поведение не определено
Или что-то еще? Меняется ли ответ, если N> 1?