您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

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

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

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

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

其他 2022/1/1 18:15:53 有331人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶