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

System.currentTimeMillis是否将始终返回> =先前调用的值?

劳通
2023-03-14
问题内容

https://docs.oracle.com/javase/6/docs/api/java/lang/System.html#currentTimeMillis()说:

返回当前时间(以毫秒为单位)。请注意,虽然返回值的时间单位是毫秒,但该值的粒度取决于基础操作系统,并且可能更大。例如,许多操作系统以几十毫秒为单位测量时间。

我不确定我是否可以保证此代码将始终打印出不断增加(或相同)的数字。

while (1) { 
    System.out.println(System.currentTimeMillis() );
}

问题答案:

简短的回答是否定的,System.currentTimeMillis()不是
单调的。它基于系统时间,因此在时钟调整(例如,通过NTP)的情况下,可能会以任何方式(向前或向后)变化。

System.nanoTime()当且仅当基础平台支持时,它是单调的CLOCK_MONOTONIC-
在某些情况下(不是),请参见Java错误报告6458294上的注释,以获得良好的撰写。

(而且,作为一个额外的轶事,我个人观察到(几次)System.currentTimeMillis()在没有时钟调整的情况下跨线程运行“向后”-也就是说,在一个线程中对该方法的调用返回的值比调用低在另一个线程中,即使它是按时间顺序在“实时”之后发生的)

如果需要单调源,则System.nanoTime()在支持单调性的平台上是您的最佳选择。



 类似资料:
  • 我想以毫秒为单位获取当前的UTC时间。我搜索了一下google,得到了System.currentTimeMillis()确实返回UTC时间的一些答案。但事实并非如此。如果我做了以下事情: 所有三个时间几乎相同(由于通话时间不同,时间相差毫秒)。 这个时间不是UTC时间,而是我的时区时间。如何在android中获取当前UTC时间?

  • 这让我快疯了。我有一个简单的eclipse项目,其中有一个src文件夹和一个类。但我似乎无法让getResource找到它。我做错了什么? 如果我右键单击类名,路径是testsprroject/src/ContextTest。java,根据运行配置中的classpath选项卡,默认的类路径是TestProject。 它不适用于

  • 问题内容: 我想以毫秒为单位获取当前UTC时间。我搜索了google,并得到了一些System.currentTimeMillis()确实返回UTC时间的答案。但事实并非如此。如果我执行以下操作: 这三个时间几乎都相同(由于通话,相差以毫秒为单位)。 这不是UTC时间,而是我的时区时间。如何在Android中获取当前UTC时间? 问题答案: 您显示的所有三行都将给出自unix纪元以来的毫秒数,这是

  • 问题内容: 我以前使用过媒体播放器,但从未遇到过此问题。每当我尝试使用MediaPlayer.create()时,该方法都会使我为null,并且无法播放声音。有什么我想念的吗? 我的sound.mp3在我的原始文件夹中,通过将声音拖到eclipse中的文件夹中,我将其放置在其中。请帮忙,因为我以前玩过声音,所以这真的困扰我:( 问题答案: 如果create() API由于某种原因失败,则返回nul

  • 问题内容: 尽管是有效的类,但以下代码会打印。 文档说方法返回 由 aClassName 命名的类对象,或者如果当前没有加载该名称的类。如果 aClassName 为,则返回。 我也试图获得当前的viewcontroller已加载但仍然得到 可能是什么问题? 更新: 即使尝试这样做,我仍然可以 问题答案: 该函数 确实 适用于(纯和Objective-C派生的)swift类,但是仅当您使用全限定名

  • 问题内容: 我觉得有点愚蠢,但它不起作用: 我有如果给定的用户是unicode。如果字符串中包含或,我想打印成功,但是我总是得到的结果。 问题答案: 隐式锚定到字符串的开头。如果要在字符串中搜索可以在字符串中任何位置的子字符串,则需要使用: 输出: 另外,Python Regexes不需要在开头和结尾都有一个。 最后,我添加到该行的末尾,因为我认为这就是您想要的。否则,您会得到类似的信息,但并不太