System.currentTimeMillis()如何获得时间

问题描述 投票:5回答:1

是否实现了System.currentTimeMillis()方法,以便对底层操作系统进行系统调用,以便接收当前时间?

我问,因为据我所知,该方法运行速度非常快,只需6个CPU时钟,但这没有意义,因为已知系统调用很慢。

我在这里错过了什么?

time jvm system-calls
1个回答
7
投票

System.currentTimeMillis()通常不需要切换到内核模式。 OS提供了一种机制,允许通过将相应的内核页面直接映射到应用程序地址空间来从用户模式读取当前时间

例如。 Linux上的Oracle JDK和OpenJDK实现System.currentTimeMillis()调用glibc gettimeofday函数。此调用通过vDSO直接从用户空间访问内核数据。

© www.soinside.com 2019 - 2024. All rights reserved.