System.nanoTime Javadoc中引用的任意点是什么?

Sir*_*mar 4 java time

我明白这System.nanoTime()与时代无关(System.currentTimeMillis()尽管与此有关).

从Javadoc开始,它声明返回的值System.nanoTime()是某个任意时间点(甚至可能是未来)的偏移量.

关于这一点

  1. 这个时间点在同一平台上的JVM实例中是不变的吗?
  2. 跨平台的JVM实例的这个时间点是不变的吗?

如果假设我运行我的应用程序并将值保存System.nanoTime()到文件中.接下来,我重新执行我的应用程序并计算文件中的值与返回的新值之间的差异System.nanoTime().

那么可以安全地假设差异是执行之间的实际时间量吗?

如果任意时间点保持不变将是如此.

但是我不确定这是否是这种行为

And*_*ner 7

不,这是武断的.不要依赖它是任何给定的值,因为它没有指定以这种方式工作.正如它在Javadoc中所说:

在Java虚拟机的实例中,此方法的所有调用都使用相同的原点; 其他虚拟机实例可能使用不同的来源.

System.nanoTime()用于测量单个JVM上的已用时间,因此您只关心两次调用之间的值差异.因此,不需要知道偏移.