一般的,我們編寫單例模式往往直接在單例引用的時候,即把例項生成,採用private final static 的成員變數直接初始化掉,這種方法能適應大部分的場景,但有時候本單例模式可能還處理其他業務,那麼很可能用不到初始化的成員變數,那麼只有當要用到本單例物件時,才建立物件的懶載入模式就很必須了。
有人想到了用synchronized 包裝方法來達到初始化的目的,但是當多執行緒同時訪問時,又大大影響了效率,進一步有人想到了用二次同步的方法來實現單例模式,其實這是個錯誤的做法,這裡也不做討論。這裡介紹一種真正的單例模式懶載入的寫法:
public class lazysingleton
private static class singletonholder
public static lazysingleton getinstance()
}通過使用內部類來實現,這才是真正的單例懶載入。
閱讀原文
單例模式懶載入併發
單例雖然沒有快取寫的那麼平凡,如果在getinstance方法上加sychonize會大大影響效能,單例的寫只有在第一使用時才會寫。使用讀寫鎖操作,基本上都上的讀鎖,對其他執行緒訪問沒有影響public class singleton public static singleton getinsta...
設計模式 單例模式 懶載入
這篇文章總結幾種比較常用的設計模式,不懂得設計模式。怎麼敢稱熟悉oop思想。單例模式的核心結構中只包含乙個被稱為單例類的特殊類,通過單例模式可以保證系統中乙個類只有乙個例項 由於快載入單例模式是執行緒安全的,所以本文只討論懶載入單例模式的執行緒安全問題 版本一 使用懶載入 快載入 程式呼叫時再分配記...
單例模式(懶載入 執行緒安全)
1 雙重檢查 單例模式 懶載入 執行緒安全 一 雙重檢查方式 public class singletondoublecheck 雙重檢查 public static synchronized singletondoublecheck getinstance return instance 2 靜態...