Java 的Thread.sleep(long millis, int nanos) 方法

    public static void sleep(long millis, int nanos)
throws InterruptedException {
if (millis < 0) {
throw new IllegalArgumentException("timeout value is negative");
}
if (nanos < 0 || nanos > 999999) {
throw new IllegalArgumentException(
"nanosecond timeout value out of range");
}
if (nanos >= 500000 || (nanos != 0 && millis == 0)) {
millis++;
}
sleep(millis);
}

从这个方法里面我得到的信息,线程sleep时间的最小时间单位是毫秒。但是这个nanos参数的意义我不是很明白,当大于500000或者填写了nanos,但millis等于0时可以加一,但是,当mills大于0,nanos<500000时,并不能实际控制线程睡眠时间,Thread.sleep(1,200),Thread.sleep(1,4444)时,效果是一样的,。想知道这个nanos参数的意义,为什么是这样设计的。

回答

500000 ns = 0.5 ms
这里是四舍五入的意思,超过 0.5ms 算 1ms,不超过舍去,并不能精确到纳秒
没觉得有什么实际意义

以上是Java 的Thread.sleep(long millis, int nanos) 方法的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>