java語言

當前位置 /首頁/計算機/java語言/列表

多執行緒的餓漢式和懶漢式

導語:多執行緒的單例設計模式保證某個類中記憶體中只有一個物件,分為餓漢式和懶漢式,讓我們瞭解一下吧!

多執行緒的餓漢式和懶漢式

  (1)餓漢式:

class Single

{

private Single(){}//將建構函式私有化,不讓別的`類建立該類物件

private static final Single s=new Single();//自己建立一個物件

public static Single getInstance()//提供一個公共訪問方式

{

return s;

}

}

  (2)懶漢式:

class Single

{

private Single(){}

private static Single s;

public static Single getInstance()

{

if(s==null)

s=new Single();

return s;

}

}

餓漢式和懶漢式的區別:

**

餓漢式是類一載入進記憶體就建立好了物件;

懶漢式則是類載入進記憶體的時候,物件還沒有存在,只有呼叫了getInstance()方法時,物件才開始建立。

**

懶漢式是延遲載入,如果多個執行緒同時操作懶漢式時就有可能出現執行緒安全問題,解決執行緒安全問題

可以加同步來解決。但是加了同步之後,每一次都要比較鎖,效率就變慢了,

所以可以加雙重判斷來提高程式效率。

如將上述懶漢式的Instance函式改成同步:

public static Single getInstance()

{

if(s==null)

{

synchronized(s)

{

if(s==null)

s=new Single();

}

}

return s;

}

TAG標籤:懶漢 多執行緒 餓漢 #