懶漢模式(延遲載入)

2021-09-29 11:42:15 字數 676 閱讀 7434

懶漢模式–延遲載入

public

class

singletonlazy3

private

volatile

static singletonlazy3 instance=null;

//保證正常初始化

public

synchronized

static singletonlazy3 getinstance()

}}return instance;

}}

*注:*解決共享變數可見性問題,需要用volatile關鍵字修飾

可見性特點:

1)對volatile變數的寫會立即重新整理到主存

2)對volatile變數的讀會讀主存中的新值

步驟2,3可能被重排序 : 流程變為1–>3–>2

這些執行緒1在執行完第三步後還沒來得及執行第二步時候,如果記憶體重新整理到了主存,

那麼執行緒2將得到乙個未初始化完成的物件。

因此,如果將object宣告為volatile的,則步驟2,3不會被重排序

private

static

volatile singleton instance;

延遲載入與單例模式

延遲載入,也較延遲例項化,延遲初始化等,主要表達的思想就是,把物件的建立延遲到使用的時候建立,而不是物件例項化的時候建立。這種方式避免了效能的浪費。當建立乙個物件的子物件開銷比較大時,而且有可能在程式中用不到這個子物件,那麼久可以考慮用延遲載入的方式來建立子物件。另外就是當乙個程式啟動時,需要建立多...

單例模式以及延遲載入

延遲載入,也叫延遲例項化,延遲初始化等,主要表達的思想就是 把物件的建立延遲到使用的時候建立,而不是物件例項化的時候建立。這種方式避免了效能的浪費。當建立乙個物件的子物件開銷比較大時,而且有可能在程式中用不到這個子物件,那麼就可以考慮用延遲載入的方式來建立子物件。另外就是當乙個程式啟動時,需要建立多...

單例模式的延遲載入

發表於 2014 10 21 23 56 04 830人閱讀 分類 隨寫 延遲載入,也叫延遲例項化,延遲初始化等,主要表達的思想就是 把物件的建立延遲到使用的時候建立,而不是物件例項化的時候建立。這種方式避免了效能的浪費。當建立乙個物件的子物件開銷比較大時,而且有可能在程式中用不到這個子物件,那麼就...