您好,登錄后才能下訂單哦!
惡漢單例模式:
/**
惡漢單例模式,用空間換時(shí)間的思想進(jìn)行對象的初始化,在多線程的情況下,故不存在線程安全問題。
*/
public class WickedManSingleTon {
private static WickedManSingleTon instance=new WickedManSingleTon();
private WickedManSingleTon() {
}
public static WickedManSingleTon getIntance() {
return instance;
}
}
懶漢模式:
/**
懶漢單例模式,用時(shí)間換空間的概念,實(shí)例化單例對象,在多線程的情況下,存在線程安全的問題。
*/
public class LasyManSingleTon {
private static LasyManSingleTon instance=null;
private LasyManSingleTon() {
}
public static LasyManSingleTon getInstance() {
if(instance==null) {
instance=new LasyManSingleTon();
}
return instance;
}
}
/**
已經(jīng)非空了,會被直接拿出來用,這樣的話,就會出現(xiàn)異常。這個(gè)就是著名的DCL失效問題。
*/
public class DCLInstance {
// 手寫雙檢索
private static DCLInstance instance = null;//優(yōu)化采用volatile
private DCLInstance() {
}
public static DCLInstance getInstance() {
if (instance == null) {
// 同步操作
synchronized (DCLInstance.class) {
if (instance == null) {
// 多線程環(huán)境下可能會出現(xiàn)問題的地方
instance = new DCLInstance();
}
}
}
return instance;
}
}
/**
*/
public class InerClassMakeIntance {
private static InerClassMakeIntance instance =null;
private InerClassMakeIntance() {
}
public static InerClassMakeIntance getInstance() {
return InerInstance.t1;
}
private static class InerInstance {
private static InerClassMakeIntance t1 = new InerClassMakeIntance();
}
}
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。