Могут ли нативные реализации режима сна, ожидания, паркования полагаться на RTC? - PullRequest
1 голос
/ 23 февраля 2012

Мы сталкиваемся с некоторыми проблемами с батарейками часов реального времени (RTC).Обычно они старые и иногда один из них умирает ... или просто становится слабее.Это не очень предсказуемо.Независимо от того, вызвано ли это неисправностью материнской платы, влажностью, ее возрастом или чем-то еще, это случается.Мы можем заменить их или заменить компьютер, но здесь дело не в этом.

Было бы очень хорошо, если бы кто-нибудь знал, может ли сбой RTC повлиять на следующие функции:

public static native void sleep(long millis) throws InterruptedException;
public final native void wait(long timeout) throws InterruptedException;
public native void park(boolean paramBoolean, long paramLong);

park в sun.misc.Unsafe

поведение этих функций, вероятно, зависит от операционной системы и аппаратных компонентов, но это может быть ... почти все.Все, что я знаю, это то, что это ПК, работающий под управлением Windows (XP или более поздней версии) и использующий стандартную 1.6 JVM.Компьютеру может быть до 10 лет.

Я посмотрел на открытый JDK и обнаружил, что sleep(long millis) собирается на WaitForMultipleObjects.Абсолютно без понятия о park(boolean paramBoolean, long paramLong), и я заблудился, пытаясь понять, что происходит с wait(long timeout).

1 Ответ

1 голос
/ 23 февраля 2012

Простой тест. Ложитесь спать на десять минут, затем немедленно переведите часы на час вперед и посмотрите, просыпается ли это до того, как все десять минут закончатся. Это, наверное, чертовски просто, чем бродить по внутренностям JDK: -)

Но я должен это сказать. Разработчики не должны использовать оборудование десятилетней давности, и они , особенно , не должны использовать неисправное оборудование.

...