我做了一个小程序来测试System.currentTimeMillis().我有一个奇怪的结果.这是我的日志:
1 26-12-09 20:48:21 - [Log] lTime = 1261860501009 2 26-12-09 20:48:21 - [Log] lTime = 1261860501012 3 26-12-09 20:48:21 - [Log] lTime = 1261864899078 4 26-12-09 20:48:21 - [Log] lTime = 1261860501033 5 26-12-09 20:48:21 - [Log] lTime = 1261860501069
如您所见,第3行存在问题.时间磨损是错误的.它应该在1261860501012和1261860501033之间.大约有73毫秒的误差.
有人知道问题来自哪里?
非常感谢
bill0ute
编辑:操作系统:Debian 4.0,Java:6_17.
我的代码:
while (true) setLog (System.currentTimeMillis ());
编辑:程序在基于Linux的VPS上运行
System.currentTimeMillis()
取决于系统时钟.看起来系统时钟已被外部程序微调,对于可能是NTP的 Linux .
请注意,您不应该System.currentTimeMillis()
用来衡量经过的时间.它最好使用,System.nanoTime()
但即使这不保证是单调的.