当前位置: 首页 > 面试题库 >

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

扶绍辉
2023-03-14
问题内容

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

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

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

编辑

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


问题答案:

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

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

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



 类似资料:
  • 问题内容: 当时间服务器中的系统时间有更新或由于DST更改时,是否有办法得到通知?我正在执行API /系统调用或等效操作。 我的工作之一是在不使用SQL的情况下,将类似于SQL NOW()的值的生成优化为一个小时的粒度。 问题答案: 您可以使用timerfd_create(2)创建一个计时器,然后在设置它时用选项标记它。将其设置为将来不可行的时间,然后在其上进行阻止(使用轮询/选择等)-如果系统时

  • 我的应用程序使用Spring boot和hikaricp。出现以下错误:HikariPool-1-检测到异常的系统时钟变化,软逐出池中的连接 请帮我修一下!

  • 本文向大家介绍ThinkPHP中系统变量有哪些?如何获取系统变量?相关面试题,主要包含被问及ThinkPHP中系统变量有哪些?如何获取系统变量?时的应答技巧和注意事项,需要的朋友参考一下 (1)系统变量:SERVER、 SERVER、 S ERVER、ENV、 $POST、 $GET、 REQUEST、 REQUEST、 R EQUEST、SESSION和 $_COOKIE变量 (2)获取系统变量

  • 我正在为我的UI元素制作一个简单的动画。 我有一个动画组件,它有2个不同的动画-ZoomIn和ZoomOut。 每当需要在屏幕上显示UI元素(如按钮)时,就会显示这些动画。 我通常更喜欢在不显示时停用游戏对象。 我为动画编写了以下方法: 对于大多数屏幕,代码工作正常,但当我使用timescale=0暂停游戏时,代码显示问题。 当时间刻度为0时,线gameObj。SetActive(false)不工

  • 问题内容: 我有一个关于Python和sqlalchemy模块的问题。sqlalchemy Python中的等效项是什么? 问题答案: 对象也具有属性。

  • 问题内容: 我想要这样的东西: 同样重要的是,例如,如果startTime为23:00,endTime为1:00,则持续时间为2:00。 为了在Java中完成此操作,应使用哪些类型? 问题答案: 不幸的是,到目前为止发布的十个答案中没有一个是正确的。 如果要测量经过的时间,并且希望它是正确的,则必须使用。你不能使用,除非你不介意结果错误。 的目的是测量经过的时间,目的是测量挂钟时间。你不能将一个用