问题描述
我想知道 System.nanoTime()
的时代是基于什么的。
显然它不是基于 1970 年,因为 (System.nanoTime()/1000000L)
(返回 31106704
)no where near 等于 System.currentTimeMillis()
(返回 1626111981278
)。
解决方法
嗯,nanoTime()
的文档相当清楚:
此方法只能用于测量经过的时间,与系统或挂钟时间的任何其他概念无关。返回的值表示自某个固定但任意的原始时间以来的纳秒(可能在未来,因此值可能为负)。在 Java 虚拟机的实例中,此方法的所有调用都使用相同的来源...
所以:
- 时代是特定于实现的,正是方法实现的作者认为会起作用的;
- 时代在整个JVM实例中是固定的;
- 可能其中一个或两个值为负,但在这种情况下计算仍然正确。
那么,你应该关心时代吗?不。绝对不是。您对 的实施感到好奇吗?你不能,因为没有“the”实现。