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

Java中的计时器精度

景德海
2023-03-14
问题内容

我正在安排一些事情,这些事情我不能只是冗长的循环。而且我需要给它们计时以了解完成它们需要多长时间,但是看来计时器在Java中的精度为15-16毫秒?我该如何解决?


问题答案:

您是否尝试过使用System.nanoTime()?

从Javadoc:

返回最精确的可用系统计时器的当前值,以纳秒为单位。

此方法只能用于测量经过的时间,与系统或挂钟时间的任何其他概念无关。返回的值表示自某个固定但任意时间以来的纳秒(也许是将来的时间,因此值可能为负)。此方法提供纳秒精度,但不一定提供纳秒精度。无法保证值更改的频率。由于数值溢出,连续呼叫之间的差异超过大约292年(2
63纳秒),因此无法准确计算经过时间。

例如,要测量某些代码执行所需的时间:

长startTime = System.nanoTime(); // …正在测量的代码… long EstimatedTime =
System.nanoTime()-startTime;



 类似资料:
  • 运行以下(略为伪)代码会产生以下结果。我震惊于定时器是如此的精确(每,增益约14ms)。 外面还有更准确的吗?

  • 问题内容: 我试图在我的EntryPoint中使用Java计时器: 但是当尝试编译时,我得到:没有源代码可用于type ;您忘了继承必需的模块吗? 我该如何解决此错误? 问题答案: 如果您使用的是Libgdx,则可以使用libgdx 基础结构 来计划将来运行的工作: 这样,您可以在独立于平台的代码中安排计时器。(特定于GWT的解决方案仅在项目的平台相关部分中起作用。)

  • 我想在Java做天文台;只是为了游戏。 我在Java API中找到了这个类,但我不知道如何使用它。 我尝试这个代码来创建天文台的对象,编译器说“我找不到简单的“天文台”。我想是因为我需要导入一个指定的librery来为天文台创建一个对象。 我的问题是创建类计时器的对象;我知道如何利用它来实现我的目标。 同样,我的问题是如何创建类天文台的对象,只是它。我需要指定的librery吗?是不是天文台类,我

  • 问题内容: 我想做一个计时器,它会在发生某些事情时重新启动: 创建新时间表时出现问题,出现以下错误: 我不知道该怎么办!谢谢! 问题答案: 这对我来说很好用…您可以粘贴完整的代码和错误吗? 输出:

  • 问题内容: 我正在尝试使用计时器来安排应用程序中的重复事件。但是,我希望能够实时调整事件的触发时间(根据用户输入)。 例如: 然后,我启动此类的新实例并调用其set period函数。但是,当我这样做时,我得到了一个非法状态异常。您可以看到System.out.println(timer);。在那儿,因为我正在检查,并且足够肯定,它们是两个不同的计时器……所以,当我尝试在全新的Timer实例上运行

  • 我在java中遇到了ScheduledExecutorService的问题(几天前我没有遇到这个问题,这让我觉得很奇怪)。请找到下面的代码和控制台输出。重复执行任务之间的延迟是1毫秒,所以理想情况下我应该达到每秒1000的计数(几毫秒),但这只是没有发生。请帮帮忙.. 代码: 控制台输出 1000-2013年3月13日14:43:54.477 200-2013年3月13日14:44:10.296