多线程环境中的事件时间戳

时间:2014-08-12 18:45:41

标签: java time timer

我正在处理一些Web服务代码,我想跟踪请求的速度。我通过使用{{1}为每个请求记录时间戳来做到这一点。 }。我选择了System.nanoTime(),因为我只关心当前时间,而不是任何日历,我不希望它受到系统时钟更新的影响。

然而,似乎System.currentTimeMillis()在多核环境中不能很好地发挥作用,因为每个CPU核心的启动时间会有所不同。

我正在寻找获得数字(nanotime())时间戳的方法:

  • 与当前日历时间无关
  • 在多个核心/线程之间保持一致
  • 相对便宜(最好不使用反射)

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

除非明确同步线程,否则无法保证生成时钟值。显然它会对性能产生影响。你应该重新设计你的系统,不要依赖这样的时钟。如果您需要多线程系统的时序,也许您应该查看Vector Clock