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

前端之家收集整理的这篇文章主要介绍了(Oracle)Java JVM如何知道闰秒正在发生?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
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

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

猜你在找的Oracle相关文章