Thread.sleep(500) 将暂停当前线程至少 500 毫秒,我知道它可能比 500 多一点,但它永远不会少于那个。现在 1 毫秒 = 1000000 纳秒我想暂停当前线程 500 毫秒,即 = 500*1000000 纳秒但是当我运行以下代码时,它有时会以纳秒为单位休眠小于指定值。为什么是这样?以及如何睡眠至少 500*1000000 纳秒。
long t1=System.nanoTime();
try{
Thread.sleep(500);
}catch(InterruptedException e){}
long t2=System.nanoTime();
System.out.println((t2-t1)+" nanoseconds");
System.out.println((500*1000000-(t2-t1))+" nanoseconds");
有时输出是
499795328 nanoseconds
204672 nanoseconds