天天看點

Java 單例模式線程安全

singleton模式主要作用是保證在java應用程式中,一個類class隻有一個執行個體存在。

好處:

     和全局變量相比,它對于系統性能的優化更好,因為它是屬于什麼時候用,什麼時候執行個體化的。

  一般singleton模式通常有兩種形式:

第一種形式: 也是常用的形式。

Java 單例模式線程安全
Java 單例模式線程安全

第二種形式:

Java 單例模式線程安全
Java 單例模式線程安全

ps:在靜态初始化器中建立單件,這段代碼就保證了線程安全。

對于多線程的通路,我們多半采用第二種“急切”的方式,而不用第一種延遲處理的方式,這樣就會解決多線程對單一通路點通路造成順序執行出錯的問題。

還有一種方式:用雙重檢查枷鎖,在getinstance()中減少使用同步

Java 單例模式線程安全
Java 單例模式線程安全

volatile關鍵詞確定:當instance變量被初始化成singletion執行個體時,多個線程正确地處理instance變量,因為它會強制變量去對應記憶體中共享的變量