Я написал Java-программу, которая выполняет некоторую функцию и, как ожидается, будет спать в течение 12 часов (через TimeUnit.HOURS.sleep(12)
), а затем продолжит выполнение другой функции.
Я по ошибке оставил свой ноутбук включенным на ночь без подключения к источнику питания, и мой ноутбук перешел в режим гибернации. Этим утром я разбудил компьютер из режима гибернации, и моя программа работает, как и раньше.
Однако на данный момент прошло более 12 часов с тех пор, как была вызвана начальная TimeUnit.HOURS.sleep(12)
, а код (то есть вторая функция) не выполнился.
Означает ли это, что теперь мне нужно ждать еще 12 часов (начиная с того момента, когда я разбудил ноутбук), прежде чем он выполнит желаемый код? (Я не могу остановить свою программу прямо сейчас, чтобы проверить это, потому что тогда я гарантирую, что моя функция не будет выполняться даже после дополнительных 12 часов, поскольку она зависит от вывода первой функции, которая зависит от данных в реальном времени)
Я нашел аналогичную ветку на SO, связанную с C, но ничего о Java.
Основываясь на одном потоке, который я прочитал, программа сравнивает две метки времени при определении времени сна, но, конечно, этого не может быть, иначе мой код уже был бы выполнен. Так как же thread.sleep()
работает под капотом?
Спасибо