问题描述
这并不能真正回答您的问题,但是错误#6458294暗示,在可能的情况下,Sun的nanoTime()实现将使用真正单调的机制(在Linux上为CLOCK_MONOTONIC,在Windows上为QueryPerformanceFrequency / QueryPerformanceCounter)。仅当这些不可用时,它才会退回到一种容易受系统时钟变化影响的机制。
如果您对正在运行的硬件有控制(或至少了解),并且可以确保可以使用这些时钟机制,那么您可能很幸运,并且nanoTime()会做的很好。
您可能还想阅读这篇博客文章,其中更详细地讨论了Windows上的HotSpot案例。
解决方法
我想测量Java中的经过时间。但是和的差异System.currentTimeMillis()
(我相信)System.nanoTime()
可以通过外部更改(例如,某人(或系统)更改系统时钟)来更改。
不能使用网络电话,因为它可能会非常频繁且需要快速返回。
有一个通用的解决方案吗?
编辑
抱歉,我应该详细说明原因。并不是要阻止恶意用户-就像是客户端启动的闲置客户端注销和常规的客户端事件。