2016-01-04 5 views
3

Выполняется ли метод System.currentTimeMillis() для системного вызова базовой операционной системы для получения текущего времени?Как System.currentTimeMillis() получает время

Прошу, поскольку, насколько я знаю, метод работает довольно быстро и занимает всего 6 часов процессора, но это не имеет смысла, поскольку системные вызовы, как известно, являются медленными.

Что мне здесь не хватает?

ответ

4

System.currentTimeMillis() Обычно не требуется переход в режим ядра. ОС обеспечивает механизм, позволяющий считывать текущее время из пользовательского режима путем сопоставления соответствующих страниц ядра непосредственно в адресное пространство приложения.

E.g. Реализация Oracle JDK и OpenJDK System.currentTimeMillis() на Linux вызывает функцию glibc gettimeofday. Этот вызов обращается к данным ядра непосредственно из пользовательского пространства с помощью vDSO.

Смежные вопросы