System.currentTimeMillis()如何获得时间

时间:2016-01-04 17:10:54

标签: time jvm system-calls

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

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

我在这里缺少什么?

1 个答案:

答案 0 :(得分:7)

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

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