如何比较两个纳米时间值?[javadoc confusion]
2022-09-02 13:28:03
我已经阅读了javadoc,一切似乎都很清楚。直到我到达最后一段:System.nanoTime()
比较两个 nanoTime 值
long t0 = System.nanoTime();
...
long t1 = System.nanoTime();
应该使用t1 - t0<0,而不是t1<t0,因为数字溢出的可能性。
有两件事我不清楚:
- 为什么要检查是否在之后拍摄?我的理解是,纳米时间总是在增加。所以,我宁愿检查.
t1 < t0
t1
t0
t1 > t0
- 让我们假设这是一个拼写错误,他们的意思是正确的检查是。我仍然不明白为什么这是正确的检查方式,而不是。他们提到数字溢出,我不太明白他们的意思。关于数字溢出,下面是提到的:
t1 - t0 > 0
t1 > t0
由于数值溢出,跨度大于大约 292 年(2^63 纳秒)的连续调用的差异将无法正确计算经过的时间。
好吧,既然纳米时间是作为长值存储的,那么它最终会在292年后溢出。接下来会发生什么?它是否从头开始,即最低的负值 -2^63?还是它停止测量并始终返回(2 ^ 63 - 1)?