為什么僅當 TotalSeconds 是一刻鐘的倍數時才對ZoneOffsetZoneOffset.ofTotalSeconds(int totalSeconds)使用緩存?if (totalSeconds % (15 * SECONDS_PER_MINUTE) == 0) { Integer totalSecs = totalSeconds; ZoneOffset result = SECONDS_CACHE.get(totalSecs); if (result == null) { (...)
1 回答

HUH函數
TA貢獻1836條經驗 獲得超4個贊
例如,迄今為止,當今使用的最多區域偏移量是一刻鐘的倍數
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% 正確,它也抓住了所采取的決定背后最重要的想法。事情稍微復雜一些。例如,并沒有使用許多不能被整小時整除的偏移量,但他們選擇了一個簡單的條件。
添加回答
舉報
0/150
提交
取消