我想了解這是對JDK做了更改:併發性 - 爲什麼使用嵌套子類作爲最終靜態字段?
http://hg.openjdk.java.net/jdk8/jdk8/jdk/rev/223be1d3494f
在此之前的變化,使用雙重檢查鎖定,以確保線程安全,這導致的問題。
他們爲什麼還要使用另一個子類?爲什麼他們不是簡單地在StrictMath
中使用static final Random randomNumberGenerator = new Random();
?
,或者更一般的,爲什麼會這樣:
標準的技術是有一個嵌套子與需求初始化的最終場 (懶洋洋)
(從https://bugs.openjdk.java.net/browse/JDK-6470700)
* 「爲什麼他們不能簡單地用靜態最終隨機randomNumberGenerator =新的隨機();」 * - 也許,以節省內存。 'Math.random()'很少使用。 –