【问题标题】:ZoneOffset calculation with cache带缓存的 ZoneOffset 计算
【发布时间】:2019-10-04 23:38:00
【问题描述】:

为什么ZoneOffset.ofTotalSeconds(int totalSeconds) 仅在 totalSeconds 是一刻钟的倍数时才为 ZoneOffset 使用缓存?

if (totalSeconds % (15 * SECONDS_PER_MINUTE) == 0) {
            Integer totalSecs = totalSeconds;
            ZoneOffset result = SECONDS_CACHE.get(totalSecs);
            if (result == null) {
            (...)

【问题讨论】:

    标签: java time java-time


    【解决方案1】:

    到目前为止,目前使用的大多数区域偏移量是一刻钟的倍数,例如

    Europe/Ljubljana     +02:00
    America/Boa_Vista    -04:00
    Asia/Brunei          +08:00
    Pacific/Wake         +12:00
    Asia/Colombo         +05:30
    Asia/Kathmandu       +05:45
    

    由于经常使用它们,因此值得缓存它们。如果在您的程序中使用它们,它们不太可能再次在您的程序或在同一 JVM 中运行的另一个程序中使用。其他偏移量在历史上已经使用过或根本没有使用过,因此不值得缓存。即使你使用过一次,他们也认为你再次使用它的可能性很低,以至于他们不想缓存它,直到 JVM 关闭(可能在几周甚至几个月后)。

    我并没有声称自己是读心者,但我给出的解释对自己来说是有道理的,我想如果不是 100% 正确,它就会抓住做出决定背后的最重要的想法。事情稍微复杂一些。例如,没有多少不能被一小时整除的偏移量正在使用中,但他们选择了一个简单的条件。

    【讨论】:

      猜你喜欢
      • 2018-09-26
      • 1970-01-01
      • 2014-05-25
      • 1970-01-01
      • 2015-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多