一直以为java的sleep不准,原来是测量方法错了--
一直都是用System.currentTimeMillis()来计算时间差,实际上这是不准确的,
System.currentTimeMillis()的返回有10到15毫秒误差,用来测量Thread.sleep(0)得到的要么是0要么是10或15, 但用System.nanoTime()来测量的话,误差不超过1毫秒.
API 解释:
static long | currentTimeMillis() 返回以毫秒为单位的当前时间。 |
static long | nanoTime() 返回最准确的可用系统计时器的当前值,以毫微秒为单位。 |