singleton模式主要作用是保證在java應用程式中,一個類class隻有一個執行個體存在。
好處:
和全局變量相比,它對于系統性能的優化更好,因為它是屬于什麼時候用,什麼時候執行個體化的。
一般singleton模式通常有兩種形式:
第一種形式: 也是常用的形式。
第二種形式:
ps:在靜态初始化器中建立單件,這段代碼就保證了線程安全。
對于多線程的通路,我們多半采用第二種“急切”的方式,而不用第一種延遲處理的方式,這樣就會解決多線程對單一通路點通路造成順序執行出錯的問題。
還有一種方式:用雙重檢查枷鎖,在getinstance()中減少使用同步
volatile關鍵詞確定:當instance變量被初始化成singletion執行個體時,多個線程正确地處理instance變量,因為它會強制變量去對應記憶體中共享的變量