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

System.currenTimeInMillis()与System.nanoTime()

潘银龙
2023-03-14
问题内容

我知道这System.nanoTime()是现在测量时间的首选方法System.currentTimeInMillis()
。第一个明显的原因是nanoTime()提供了更精确的时序,另一个原因是我读到后者受系统实时时钟调整的影响。“受到系统实时时钟的影响”是什么意思?


问题答案:

在这种情况下,我发现以下博客摘录很有用:

如果您对 测量绝对时间 感兴趣,请始终使用
System.currentTimeMillis()。请注意,它的分辨率可能非常粗糙(尽管在绝对时期这很少有问题。)

如果您对 测量/计算经过时间
感兴趣,请始终使用System.nanoTime()。在大多数系统上,它将给出微秒级的分辨率。但是请注意,在某些平台上执行此调用也可能需要几微秒的时间。

时钟和计时器
-David Holmes
概述

由于System.currentTimeMillis()依赖于系统 的日 时钟,因此调整时间是合理的,以使其保持准时。

这里的调整意味着什么?以CLOCK_REALTIMELinux 的描述为例:

系统范围的时钟,用于测量实际(即挂钟)时间。设置此时钟需要适当的特权。此时钟 受系统时间的不连续跳跃 (例如,
如果系统管理员手动更改时钟 )以及adjtime(3)和NTP执行的增量调整的影响。



 类似资料:
  • 我知道那套系统。nanoTime()现在是测量。第一个明显的原因是nanoTime()提供了更精确的计时,另一个原因是我读到的,后者受到系统实时时钟调整的影响。“受到系统实时时钟的影响”是什么意思?

  • 在C语言中,假设每个算法被赋予完全相同的一组进程,那么先到先得、最短作业优先和循环之间的周转时间是否相等?还是调度算法不同?

  • 问题内容: 为了为 HTML5 Doctype 定义字符集,我应该使用哪种表示法? 短: 长: 问题答案: 在HTML5中,它们是等效的。使用较短的一个,更容易记住和键入。浏览器支持很好,因为它是为向后兼容而设计的。

  • 连接的多个输入都相当于Yes的时候才会输出Yes。 用法 Your browser does not support the video tag. 案例:小闹钟 功能:今天15:10:00,响起猫叫声小闹钟 工作原理 当所有的输入都是Yes的时候,与节点才输出Yes。

  • 问题内容: 似乎有三种 相同的 方法可以独立于平台获取依赖于平台的“文件分隔符”: 我们如何决定何时使用哪个? 它们之间甚至有什么区别吗? 问题答案: 可以通过调用命令行参数或使用命令行参数覆盖 获取默认文件系统的分隔符。 获取默认文件系统。 获取文件系统的分隔符。请注意,作为一种实例方法,在需要代码在一个JVM中对多个文件系统进行操作的情况下,可以使用该方法将不同的文件系统传递给代码(而不是默认