java-單例多例

一:單例

public class SingleObject {
private static SingleObject instance;

public SingleObject(){}

public static SingleObject getInstance(){

if(instance == null){

instance = new SingleObject();

}

return instance;
}

}
//缺點,在多線程狀態下,多個線程同時調用getInstance()會產生多個對象,不推薦




public class SingleObject {
private static SingleObject instance;

public SingleObject(){}

public static synchronized SingleObject getInstance(){

if(instance == null){

instance = new SingleObject();

}

return instance;

}
}
//在getInstances()加上鎖就可以了,但是隻有第一次西藥new 對象,鎖有性能損耗。


public class SingleObject {

private static SingleObject instance = new SingleObject();


public SingleObject(){}

public static SingleObject getInstance(){

return instance;

}
}
//這種方式還是比較好的




public class SingleObject {

private volatile static SingleObject instance;

public SingleObject(){}

public static SingleObject getInstance(){

if(instance == null){

synchronized (SingleObject.class){

if(instance == null){

instance = new SingleObject();

}
}
}
return instance;

}
}
//雙重檢查也是可以的


 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章