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