2012-09-26 65 views
5

我一直在尝试各种计时方法的代码。一种创建延迟的方法是使用thread.sleep(millis)运行一个线程,但是很明显,线程“唤醒”的时间并不是那么精确,并且可能在这个时间之前或之后。然后我碰到了定义,其中有一个选项使用thread.sleep(millis,nanos),nanos给出了“额外的纳秒精度”。线程睡眠的准确性

我的问题是,如果thread.sleep()在毫秒内不是那么精确,那么添加额外纳米给我们的用途是什么?增加此值是否会使睡眠方法突然更加准确,例如强制操作系统更严格或在监视时允许更高的优先级? 此外,.join()具有相同的选项,我认为thread.sleep()部分的答案类似于.join()部分。谢谢。

回答

1

此链接会给你的Thread.sleep的准确性和OS依赖 https://blogs.oracle.com/dholmes/entry/inside_the_hotspot_vm_clocks

+0

感谢您分享的链接罗伊斯顿是一个好主意,有几个tidbbits比我以前知道,但并不能帮助更多有我的问题。仍然想知道thread.sleep(millis,nanos)和thread.sleep(millis)是不同的。 – Tam

+1

这个参考文献改变了,或者我第一次读得不够好(很可能,我很累)。它确实有帮助。谢谢! – Tam

+1

链接已死亡。请在下次包含摘录,以便在网站更改网址时遗漏此遗忘。 – Silmarilos