2
Я знаю, что я должен использовать это вместо java.util.Timer
по разным причинам. Итак, чтобы изучить это, я смотрел документы, и у меня есть несколько вопросов:Понимание ScheduledThreadPoolExecutor
- Как работает
scheduleWithFixedDelay()
? Мое понимание таково: сначала выполняется задача после заданной задержки. Когда задача будет выполнена, она ждет заданное время, а затем снова выполнит задачу. - Что происходит, когда я отправляю задание
scheduleAtFixedRate()
, для выполнения которого требуется намного больше времени, чем указанная задержка? Например, я хочу, чтобы задача выполнялась каждые 5 секунд, но для завершения требуется 10 секунд. Я понимаю, что задача будет проходить в очереди и будет выполняться один раз в основной поток доступен - Вот мое понимание того, как
scheduleWithFixedDelay()
иscheduleAtFixedRate()
отличаются:scheduleWithFixedDelay()
ждет для выполнения этой задачи, чтобы закончить выполнение, ожидает, пока и затем снова запускает задачу, когдаscheduleAtFixedRate
просто продолжит стрельбу по задаче, не заботясь о ее завершении или нет. Правильно?