- 相關推薦
多線程的餓漢式和懶漢式
導語:多線程的單例設計模式保證某個類中內存中只有一個對象,分為餓漢式和懶漢式,讓我們了解一下吧!
(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(Single.class)
{
if(s==null)
s=new Single();
}
}
return s;
}
【多線程的餓漢式和懶漢式】相關文章:
Java多線程的定義狀態和屬性08-23
java的多線程09-09
《除法豎式》教案07-06
參與式教學總結10-12
java多線程08-31
初中數學教案《多項式與多項式相乘》09-26
《多項式除以單項式》最新教學設計08-09
安徽:力推裝配式建筑和綠色建筑重磅文件09-21
薄膜式鍵盤是什么10-24