Java單例模式

2021-08-18 05:02:45 字數 1350 閱讀 8965

單例模式可以分為懶漢式和餓漢式:

懶漢式單例模式:在類載入時不初始化。

餓漢式單例模式:在類載入時就完成了初始化,所以類載入比較慢,但獲取物件的速度快。

第一種(懶漢,執行緒不安全):

public class single

public static single getinstance()

return single;

}}

這種寫法lazy loading很明顯,但是致命的是在多執行緒不能正常工作。 

第二種(懶漢,執行緒安全):

public class single

public static synchronized single getinstance()

return single;

}}

這種寫法在getinstance()方法中加入了synchronized鎖。能夠在多執行緒中很好的工作,而且看起來它也具備很好的lazy loading,但是效率很低(因為鎖),並且大多數情況下不需要同步。

第三種(餓漢):

public class single

public static single getinstance()

}

這種方式基於classloder機制避免了多執行緒的同步問題,不過,instance在類裝載時就例項化,這時候初始化instance顯然沒有達到lazy loading的效果。

第四種(餓漢,變種):

public class singleton 

public static singleton getinstance()

}

表面上看起來差別挺大,其實更第三種方式差不多,都是在類初始化即例項化instance

第五種(靜態內部類):

public class singletondemo5 

private singletondemo5(){}

public static final singletondemo5 getinsatance()

}

第六種(列舉):

public enum singletondemo6 

}

第七種(雙重校驗鎖):

public class singletondemo7 

public static singletondemo7 getsingletondemo7()}}

return singletondemo7;

}}

java單例模式

第一種方法 public class singleton private static singleton singleton new singleton public static singleton getinstance 第二種方法 public class singleton private...

Java 單例模式

單例模式特點 1 單例類只能有乙個例項。2 單例類必須自己自己建立自己的唯一例項。3 單例類必須給所有其他物件提供這一例項。一 餓漢式單例 基於classloder機制避免了多執行緒的同步問題,使用較多 public class singleton 這裡提供了乙個供外部訪問本class的靜態方法,可...

Java單例模式

單例模式的意圖是為了確保乙個類有且僅有乙個例項,並為它提供乙個全域性訪問點。單例模式通過隱藏建構函式,提供物件建立的唯一入口點,從而將類的職責集中在類的單個例項中。design patterns一書中把單例模式歸類為 建立型 模式,意圖是在表明單例物件承擔了其他物件所要依賴的職責。單例模式的優點 在...