設計模式之單例模式三(基於類初始化延遲的懶漢式單例)

前一篇博客中採用double check的方式減輕了同步鎖的開銷,爲了防止指令重排序引起的錯誤,使用了volatile關鍵字,該關鍵字的主要作用有兩個:一、內存的可見性;二、防止局部指令的重排序。 在這裏由於指令重排序可能導致另一個線程取到的對象還未被初始化的問題可以採用第二種方法實現,也就是說讓另一個線程看不到這種重排序。這就要引入採用類初始化加載的方式。 類初始化發生在什麼時候呢?當第一次採取
相關文章
相關標籤/搜索