繁体   English   中英

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

[英]Event timestamps in a multi-threaded environment

我正在为Web服务编写一些代码,我想跟踪请求的传入速度。我通过使用System.nanoTime()记录每个请求的时间戳来实现此目的。 我之所以选择System.currentTimeMillis()是因为我只关心相对于当前时间的时间,而不关心任何日历,并且我不希望它受系统时钟更新的影响。

但是,由于每个CPU内核的启动时间都不同,因此nanotime()似乎在多核环境中不能很好地发挥作用。

我正在寻找一种方法来获取数字( long )时间戳,即:

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

有任何想法吗?

除非显式同步线程,否则无法保证产生时钟值的方式。 显然,它会对性能产生影响。 您应该重新设计系统,使其不依赖这种时钟。 如果您需要多线程系统中的计时,也许您应该考虑Vector Clock

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM