我已经阅读了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)?