【发布时间】:2014-12-22 04:00:11
【问题描述】:
此问题无意攻击System.nanoTime()。我意识到正确使用这是一种非常棘手的方法。
有哪些方法可以处理System.nanoTime() 在调用之间返回相同的值?示例:多个线程调用System.nanoTime() 并获得相同的值。
我很惊讶在 Windows 上运行测试时在我的代码库中经常看到这种情况。我们使用nanoTime 对跨多个线程到达的事件进行排序。也许这只是一个 Windows 问题,而 Linux 单调时钟更加精细。
参考资料:
【问题讨论】:
-
@ElliottFrisch - “...我们使用 nanoTime 对跨多个线程到达的事件进行排序...”希望看到您使用 UUID 进行操作。
-
为什么不使用原子计数器来对线程进行排序呢?
-
问题到底是什么?您是否正在寻找 nanoTime 的替代品?或者让 nanoTime 为您工作的方法?似乎您的世界模型(在一个滴答声中只发生一件事)不适合 nanoTime。实际上,如果您有多个线程,则无法(没有同步)为这些事件生成严格的时间顺序。
-
“tick”有多大/多长?我是 Windows 上的英特尔 i8。是否有针对每个操作系统/硬件的文档?
-
@ClaudioCorsi:这是一个有趣的想法。