【问题标题】:Is System.nanoTime() consistent across threads?System.nanoTime() 跨线程是否一致?
【发布时间】:2010-04-22 03:43:37
【问题描述】:

我想以纳秒为单位计算两个事件之间经过的时间。为此,我可以使用System.nanoTime(),如提到的here。问题是这两个事件发生在不同的线程中。


由于nanoTime() 不返回绝对时间戳,而只能用于计算时间差异,我想知道我在两个不同线程上得到的值是否一致两个事件之间经过的物理时间。

【问题讨论】:

  • 您可以使用 nanoTime() 计算与已知时间的差异。这可以让你得到一个相当准确的时钟。我不建议在小于一微秒的时间内使用它。

标签: java multithreading timestamp nanotime


【解决方案1】:

它是supposed to be,但由于内核或硬件有问题,the answer can be no,至少在某些环境中是这样。

【讨论】:

  • 另外,我曾经在 Sun JVM 上设置 -XX:AggressiveOpts 时遇到麻烦,导致 System.nanoTime() 的值不可靠。
  • 我没有这方面的专业知识,但我会链接this highly upvoted answer,这表明链接的博客文章不正确。
  • 从 OpenJDK 8u192 开始,没有与此相关的已知未解决错误。最后一个似乎是bugs.openjdk.java.net/browse/JDK-8184271
猜你喜欢
  • 1970-01-01
  • 2019-12-29
  • 1970-01-01
  • 1970-01-01
  • 2020-07-28
  • 1970-01-01
  • 2012-04-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多