Поскольку я выполняю задачу, критичную ко времени каждую секунду, я сравнил несколько методов, чтобы найти лучший способ убедиться, что моя задача действительно выполняется с фиксированными временными шагами. После вычисления стандартного вывода ошибки для всех методов кажется, что использование метода scheduledExecutorService.scheduleAtFixedRate()
приводит к лучшим результатам, но я понятия не имею, почему это так.
Кто-нибудь знает, как этот метод работает внутри? Как это, например, по сравнению с простым sleep()
гарантирует, что указанная задача действительно выполняется с фиксированными временными шагами?