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,不超过舍去,并不能精确到纳秒
没觉得有什么实际意义
哈哈哈哈哈,原来就是四舍五入的意思,我呆逼了
@15年的夏天: 😂