有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在没有JNI的情况下获得绝对纳米时间

有了System.currentTimeMillis(),我们就有了可以跨虚拟机使用的绝对时间,但有了System.nanoTime(),正如它的文档所说The value returned represents nanoseconds since some fixed but arbitrary origin time...

如果我们能够准确地得到jvm的开始时间和纳米时间相对于的这个some fixed点,我们可以得到绝对纳米时间,速度与毫秒差不多,因为其他变量不会改变它的简单数学运算,而不是绝对纳米时间

absoluteNanoTime = vmStartTimeMS * 1000 + (System.nanoTime() - nanoStartPoint)

vm的开始时间可以通过ManagementFactory.getRuntimeMXBean().getStartTime()找到

如何从JVM获取纳米起点

所以简而言之,我们的目标是让绝对纳米时间和系统一样快。nanoTime(忽略几个周期进行计算),不使用JNI调用一些依赖操作系统的时钟


共 (0) 个答案