我今天遇到了一个有趣的"时间旅行"问题,使用以下代码:
for (int i = 0; i < 1; i++){
long start = System.currentTimeMillis();
// Some code here
System.out.print(i + "\t" + (System.currentTimeMillis() - start));
start = System.currentTimeMillis();
// Some code here
System.out.println("\t" + (System.currentTimeMillis() - start));
}
Run Code Online (Sandbox Code Playgroud)
我得到了结果
0 15 -606
Run Code Online (Sandbox Code Playgroud)
它似乎不可重复.任何人都有关于在运行时间内发生的事情的任何线索?只是好奇...
新编辑:我使用了一个小测试来确认下面的答案.我运行程序并在运行期间更改系统时间,最后重复"时间旅行":
0 -3563323 163
Run Code Online (Sandbox Code Playgroud)
案件结案.多谢你们!
更多的话:currentTimeMillis()和nanoTime()都是基于系统定时器的,所以如果更新系统定时器(具体而言,转回),它们将不是单调的.对于这种情况,最好使用一些基于互联网的计时器.
| 归档时间: |
|
| 查看次数: |
7106 次 |
| 最近记录: |