当前位置: 首页 > 知识库问答 >
问题:

在Java中使用System.nanoTime()时,为什么我应该使用t1-t0

公良浩邈
2023-03-14

当我阅读Java中的System.nanoTime()API时。我发现了这句台词:

一个应该使用t1-t0<0,而不是t1

long t0 = System.nanoTime();
...
long t1 = System.nanoTime();

Java整数compareTo()-为什么使用比较与减法?

这两件事产生矛盾。

共有1个答案

林元明
2023-03-14

Nano时间不是一个“真实”时间,它只是一个计数器,当某个未指定的事件发生时(可能是计算机启动),它从某个未指定的数字开始递增。

它会溢出,在某个时候变成负值。如果您的T0正好在溢出之前(即非常大的正),而您的T1正好在之后(非常大的负数),那么T1 (即您的条件是错误的,因为 T1发生在 T0)之后).....

但是,如果你说t1-t0<0,那么,神奇的是,由于相同的溢出(未展开)原因(非常大的负值减去非常大的正值将下溢),结果将是t1在t0之后的纳秒数.....而且会是对的。

在这种情况下,两个错误真的变成了一个正确!

 类似资料:
  • 本文向大家介绍在Java中使用System.nanoTime()时,为什么要使用t1-t0 <0,而不是t1 相关面试题,主要包含被问及在Java中使用System.nanoTime()时,为什么要使用t1-t0 <0,而不是t1 时的应答技巧和注意事项,需要的朋友参考一下 纳米时间不是“实时”时间,它只是一个计数器,在发生某些未指定的事件(可能是计算机已启动)时,将从某个未指定的数字开始递增。

  • 我想知道什么时候可以有效地使用。我不确定到底有多有用,有三个原因。 (请将start和end视为整数。) > 如果我想要一个数组,,下面的代码要快得多。 我不认为仅仅获取从到的数字是有用的。我可以将

  • 问题内容: 之间有什么区别: 和 我知道JPanel是GUI组件的容器,但我确实看不到使用它的实用程序。当然,我错了,但我是从Swing开始的,所以…为什么我应该使用JPanel?真正的目的是什么? 问题答案: 为什么我应该使用JPanel? 您可以使用JPanel获得以下一项或多项好处: 将组件分组在一起。 为了更好地组织您的组件。 为了使我们能够使用 多种布局 并组合其效果。(例如,用于数字键

  • 问题内容: 有什么区别?什么时候应该使用容量为1的对抗? 问题答案: SynchronousQueue更像是一个传递,而LinkedBlockingQueue仅允许单个元素。区别在于对SynchronousQueue的put()调用直到有相应的take()调用 才返回 ,但LinkedBlockingQueue的大小为1,则put()调用(对空队列)将立即返回。 我不能说自己曾经直接使用过Sync

  • 问题内容: 我对使用和翻译有疑问。我了解到,在模型中,我应该使用。但是还有其他地方我也应该使用吗?表单定义呢?它们之间是否存在性能差异? 编辑: 还有一件事。有时候,代替被使用。正如文档所述,仅在将字符串显示给用户之前,才将字符串标记为要翻译,并在可能的最新情况下进行翻译,但是我在这里有点困惑,这与功能相似吗?我仍然很难决定在模型和表格中应该使用哪个。 问题答案: ugettext() 与 uge

  • 问题内容: 为什么以及何时应该在php中使用该函数?使用后是否应该始终使用它?我读到我必须使用它来防止会话固定,这是唯一原因吗? 问题答案: 什么啊 就像函数名称所说的那样,它是一个函数,它将用新的ID替换当前的会话ID,并保留当前的会话信息。 它有什么作用? 它主要有助于防止会话固定攻击。会话固定攻击是恶意用户试图利用系统中的漏洞固定(设置)另一个用户的会话ID(SID)的地方。这样,他们将拥有