如何在Java中测量不受系统时钟变化影响的时间?

问题描述

这并不能真正回答您的问题,但是错误#6458294暗示,在可能的情况下,Sun的nanoTime()实现将使用真正单调的机制(在Linux上为CLOCK_MONOTONIC,在Windows上为QueryPerformanceFrequency / QueryPerformanceCounter)。仅当这些不可用时,它才会退回到一种容易受系统时钟变化影响的机制。

如果您对正在运行的硬件有控制(或至少了解),并且可以确保可以使用这些时钟机制,那么您可能很幸运,并且nanoTime()会做的很好。

您可能还想阅读这篇博客文章,其中更详细地讨论了Windows上的HotSpot案例。

解决方法

我想测量Java中的经过时间。但是和的差异System.currentTimeMillis()(我相信)System.nanoTime()可以通过外部更改(例如,某人(或系统)更改系统时钟)来更改。

不能使用网络电话,因为它可能会非常频繁且需要快速返回。

有一个通用的解决方案吗?

编辑

抱歉,我应该详细说明原因。并不是要阻止恶意用户-就像是客户端启动的闲置客户端注销和常规的客户端事件。

猜你在找的技术问答相关文章

如何检查配对的蓝牙设备是打印机还是扫描仪(Android)
是否允许实体正文进行HTTP DELETE请求?
如何将ZipInputStream转换为InputStream?
java.util.logging Java 8中的变量
PowerMockito.doReturn返回null
Java中的RESTful调用
Swing / Java:如何正确使用getText和setText字符串
特殊字符和重音字符
Android Studio中的ndk.dir错误
错误“找不到主类”