Если вы не очень беспокоитесь о дрейфе и предполагаете, что машины не просто случайным образом меняют время, то вы можете пропинговать NTP-сервер, чтобы узнать, сколько времени думает ИТ-отдел, и сравнить это с вашим локальным временем.машина думает, что это так, затем вычислите разницу и, наконец, запланируйте вашу задачу по местному времени.
Так, например, скажем, что сервер NTP говорит, что это 12:30, а ваша локальная машина говорит, что это12:25.И вы хотите, чтобы ваша задача сработала в 13:00 по времени NTP.
Итак, 12:25 - 12:30 = -0: 05.13:00 + (-0: 05) = 12:55, поэтому вы планируете задание на 12: 55.
Дополнения -
Я не могу говорить о наивностиреализация, я не достаточно знаком с протоколом.
В конце концов, все сводится к тому, какой уровень практической точности приемлем для вас.NTP используется для синхронизации времени между системами.Одна из проблем, которую он решает, состоит в том, что он постоянно вызывается, он предотвращает проскальзывание часов.Если вы используете технику «NTP Ping, расписание со смещением» и, скажем, в будущем время, вероятно, будет 8 часов в будущем, вполне возможна вероятность ползучести часов, что означает, что, хотя вы и хотели, чтобы задание сработало »12:55 ", когда возвращается 12:55, он может быть отключен от исходного NTP-сервера, поскольку часы не были синхронизированы (вообще), и задание не было перенесено на виртуальную повторную синхронизацию.
Очевидно, что чем дольше период между исходным графиком и фактическим исполнением, тем больше вероятность дрейфа.Это артефакт, независимо от того, насколько хорош исходный пинг NTP.Если вы не планируете перепланировать эти задачи, поскольку они приближаются к времени выполнения, чтобы компенсировать дрейф, то, скорее всего, подойдет любая «разумная» реализация NTP.
Есть библиотека Apache Commons NET, которая имеетклиент NTP.Некоторые жалуются, что он использует System.currentTimeMillis (), который имеет (имел?) Проблемы с разрешением (10-15 мс) в Windows.System.nanoTime решает эту проблему, и вы можете легко изменить библиотеку, чтобы использовать ее, и перестроить ее.
Я не могу говорить о том, как она отражает «наивность» реализации.Но в конечном итоге все сводится к тому, насколько близко нужно синхронизировать две машины и их рабочие места (виртуально).