Какова точность графика AtFixedRate? - PullRequest
1 голос
/ 17 июля 2009

нам нужно следить за часами компьютера из Java-программы. Для этого мы планируем Runnable, используя scheduleAtFixedRate () каждые 500 мс. Мы вызываем System.currentTimeMillis () из этого каждый раз. Если мы видим, что разница больше, чем 500 мс + - определенная разрешенная дельта, тогда мы предполагаем, что часы изменились (тогда нам нужно сделать что-то другое).

Это был бы правильный способ ведения дел? Тесты на Linux показывают, что при нормальной работе достаточно разницы в 50 мс. На окнах мы должны увеличить его тоже на 100 мс, иначе оно думает, что время изменилось при каждой проверке, которую мы делаем.

Есть еще идеи, как это сделать?

Ответы [ 2 ]

2 голосов
/ 17 июля 2009

если цель состоит в том, чтобы обнаружить изменения часов, вы можете проверить текущие часы по справке на известном сервере времени

для получения дополнительной информации здесь Java NTP клиент http://support.ntp.org/bin/view/Support/JavaSntpClient используя источник абсолютного времени, вы сможете обнаружить изменения часов

0 голосов
/ 17 июля 2009

Я предполагаю, что вы используете классы Timer и TimerTask.

Может быть, вы могли бы использовать расписание метода вместо scheduleAtFixedRate. График метода, передающий дату, позволяет вам установить задачу для даты выполнения, вы можете просто продолжать перепланирование в конце вашего последнего выполнения. Вы также можете использовать расписание, передавая задержку, которая не выполняет догоняющее расписание, как scheduleAtFixedRate.

Таймер Javadoc

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...