Вот минимальный воспроизводимый пример. Он непрерывно отслеживает разницу в миллисекундах между System.currentTimeMillis () и system.nanotime () .
Код: Выделить всё
public static void main(String[] args) throws Exception {
while (true) {
long epoch = System.currentTimeMillis();
System.out.println(new Date(epoch) + " " +
(epoch - TimeUnit.NANOSECONDS.toMillis(System.nanoTime())));
Thread.sleep(1000);
}
}
[*]Run the program and let it loop for a while
[*]Put the laptop in sleep mode by clicking the apple logo menu and selecting "Sleep"
[*]Wait some time
[*]Wake up the computer
Check that the difference has Увеличение < /li>
< /ul>
В следующем примере вы можете увидеть, что после 15-секундного сна разница увеличилась почти на одинаковое количество. < /p>
...
Wed Jun 11 00:21:20 BRT 2025 1749394409334
Wed Jun 11 00:21:21 BRT 2025 1749394409334
Wed Jun 11 00:21:36 BRT 2025 1749394423732
Wed Jun 11 00:21:37 BRT 2025 1749394423732
...
< /code>
В документации говорится, что: < /p>
Возвращенное значение представляет наносекунд, так как какое -то фиксированное, но произвольное время происхождения [...]. То же самое происходит всеми вызовами этого метода в экземпляре виртуальной машины Java [...] < /p>
< /blockquote>
Однако это не так? Я что -то упускаю?
Подробнее здесь: https://stackoverflow.com/questions/796 ... ine-sleeps