【发布时间】:2009-12-21 00:25:17
【问题描述】:
我想在 Java 中测量经过的时间。但是System.currentTimeMillis() 和(我相信)System.nanoTime() 的差异可以通过外部更改来更改,例如某人(或系统)更改系统时钟。
使用网络调用不是一种选择,因为它可能需要非常频繁和快速的返回。
有没有通用的解决方案?
编辑
对不起,我应该详细说明原因。这不是为了阻止恶意用户 - 它是诸如客户端因空闲和常规客户端事件而发起的注销之类的事情。
【问题讨论】:
-
这是有正当理由的 - 例如有时间限制的许可证,以及试图通过倒计时来阻止人们破坏许可证。
-
或者例如获取可靠的 UID 时间。
-
我问的原因是因为如果有人有能力操纵系统时钟,他们可以在本地系统上为所欲为,以颠覆您的应用程序。如果你不能信任
System.currentTime,你就不能信任系统给你的任何时候,而远程源真的是唯一的选择。