2010-04-22 66 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