方法System.currentTimeMillis()
是否实现了对底层操作系统进行系统调用以便接收当前时间?
我问,因为据我所知,该方法运行速度非常快,只需6个CPU时钟,但这没有意义,因为已知系统调用很慢。
我在这里缺少什么?
答案 0 :(得分:7)
System.currentTimeMillis()
通常不需要切换到内核模式。 OS提供了一种机制,允许通过将相应的内核页面直接映射到应用程序地址空间来从用户模式读取当前时间。
E.g。 Linux上的{JD(JDK)和OpenJDK实现System.currentTimeMillis()
调用了glibc gettimeofday
函数。此调用通过vDSO
直接从用户空间访问内核数据。