我做Java的过去的试卷,我感到困惑的一个问题如下:当一个线程在它的run()方法执行以下语句Java线程sleep()方法
会发生什么? (选择所有适用的选项。)
sleep(500);
答:它将停止执行,并在500毫秒后开始执行。
B.这是要停止执行,并开始不早于500毫秒之后再次执行。
C.它会导致编译错误,因为你不能调用run()方法中的睡眠(...)方法。
D.它会导致一个编译器错误,因为睡眠(...)方法不带任何参数。
我选择A,B。但关键答案只有B,是否存在A也可能发生的情况?任何人都可以请澄清,对我?非常感谢。
的Javadoc指出:'使当前执行线程休眠(暂停执行)的指定的毫秒数,取决于系统定时器和调度器的精度和准确度。“取决于你的参考点。但从系统角度来看,至少X时间会在重新启动之前流逝。 –
全部四个答案都是错误的。我已经看到线程睡眠的时间少于请求的毫秒数。这只是一个近似值,真正的睡眠时间可能会多于或少于要求的数量。 –
@DavidWallace也许你指着这个:https://blogs.oracle.com/dholmes/entry/inside_the_hotspot_vm_clocks –