發布物件: 使乙個物件能夠被當前範圍之外的**所使用
物件逸出: 一種錯誤的發布.當乙個物件還沒有構造完成時,就使它被其它執行緒所見.
安全發布物件4種方法:
1.在靜態初始化函式中初始化乙個物件引用.
2.將物件的引用儲存到volatile型別域或者atomicreference物件中.
3.將物件的引用儲存到某個正確構造物件的final型別域中.
4.將物件的引用儲存到乙個有鎖保護的域中.
單例模式
1.懶漢模式
單例例項在第一次使用時進行建立
這種寫法在單執行緒環境下沒問題的,但是在多執行緒環境下會出現問題.執行緒不安全
原因是如果有多條執行緒同時訪問的話,可能會被呼叫兩次,那麼兩條執行緒拿到的例項是不一樣的
懶漢模式改造為執行緒安全
①.只要把工廠方法加上synchronized修飾就可以,這樣就保證這個方法在同一時間內只能被一條執行緒所執行,即保證了執行緒安全.但是並不推薦,因為也帶來了效能問題.
②.用雙重檢測機制+volatile,改造為執行緒安全
2.餓漢模式
單例例項在類裝載的時候進行建立,可以保證執行緒的安全
但是,如果構造方法中存在過多的處理,會導致類載入的時候特別慢,可能引起效率問題.
3.列舉模式(最安全的)
最推薦的這種模式
執行緒之安全發布物件 單例模式
單例模式 保證獲取到的物件是同乙個物件,物件只例項化一次 特點 單例類的構造方法是private 有乙個靜態方法getinstance獲取單例例項 兩大類 懶漢式與餓漢式 懶漢 在需要單例物件時,手動呼叫getinstance方法時,才會執行第一次建立 餓漢 預設就建立好乙個單例物件,不需要手動呼叫...
多執行緒安全單例模式
在文章開始之前我們還是有必要介紹一下什麼是單例模式。單例模式是為確保乙個類只有乙個例項,並為整個系統提供乙個全域性訪問點的一種模式方法。從概念中體現出了單例的一些特點 1 在任何情況下,單例類永遠只有乙個例項存在 2 單例需要有能力為整個系統提供這一唯一例項 1.全域性變數的缺點 必須在程式一開始就...
c 多執行緒單例模式 執行緒安全C 單例模式
我對此處記錄的單例模式有一些疑問 http us library ff650316.aspx 以下 摘自該文章 using system public sealed class singleton private static volatile singleton instance private ...