加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

(Oracle)Java JVM如何知道闰秒正在发生?

发布时间:2020-12-12 14:13:44 所属栏目:百科 来源:网络整理
导读:2015年6月30日的 leap second will occur.不同的操作系统似乎处理这种情况不同。在我的特殊情况下,我们运行一个Red Hat 6.4系统和自定义的Java(JDK 1.7)软件,它是非常依赖于时间的。根据一些 recent Red Hat released information我发现,我们的系统的NTP
2015年6月30日的 leap second will occur.不同的操作系统似乎处理这种情况不同。在我的特殊情况下,我们运行一个Red Hat 6.4系统和自定义的Java(JDK 1.7)软件,它是非常依赖于时间的。根据一些 recent Red Hat released information我发现,我们的系统的NTP守护进程将确保操作系统自动处理闰秒通过重复23:59:59两次。

我的问题是:如果我有一个长期运行的JDK 1.7进程,它是如何知道闰秒发生?我的意思是,Java如何最终知道IERS人决定插入一个闰秒? Date文档似乎表明意识到闰秒,但似乎毫无裨益的模糊。我可以假定JDK,当构造适当的Date对象或调用Calendar.getInstance()时,它是一个传递到底层操作系统的日期时间处理,以获得适当的“实时”时间值? (在我的情况下,听起来像重复第二个23:59:59,因为这是操作系统将如何处理它)。

这取决于你的jdk版本。例如,如果您正在运行更新80,您可以检查 the release notes:

JDK 7u80 contains IANA time zone data version 2015a. For more information,refer to Timezone Data Versions in the JRE Software.

然后按照链接到timezone data versions,找到2015a。然后按照the link to TZ Updater version1.4.11:

New leap second 2015-06-30 23:59:60 UTC as per IERS Bulletin C 49. (Thanks to Tim Parenti.)

它似乎没有被包括在前,所以如果你运行一个旧版本的JDK 7,你可能不会得到调整。关于它如何在内部工作的更多信息可用here。

说实话,我从来没有测试过它在实践中如何工作。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读