2012-09-26 68 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