2010-04-22 65 views
7

我想計算兩個事件之間的時間(以納秒爲單位)。要做到這一點,我可以使用System.nanoTime(),如here所述。問題是這兩個事件發生在不同的線程中。是否System.nanoTime()跨線程一致?


由於nanoTime()不會返回絕對時間,而是隻能用時間來計算差異,我想知道如果我在兩個不同的線程的值與實物相符兩次事件之間的時間已過去。

+0

您可以使用nanoTime()來計算已知時間的差異。這可以讓你得到一個相當準確的時鐘。我不會建議在小於1微秒的時間內使用它。 – 2010-04-22 06:37:21

回答

8

這是supposed to be,但由於內核bug或硬件問題,至少在某些環境下,至少在the answer can be no

+1

另外,在Sun JVM上設置'-XX:AggressiveOpts'導致System.nanoTime()的值不可靠時,我曾遇到過麻煩。 – 2010-04-22 04:10:17

+0

我沒有這方面的專業知識,但我會鏈接[這個高度upvoted答案](http://stackoverflow.com/a/4588605/1031507),表明這個鏈接的博客文章是不正確的。 – 2015-02-27 19:38:33

+0

@PaulWhalen你喜歡我編輯好的答案嗎? – 2015-02-27 22:59:43