單利模式

Bronze-y發表於2019-01-05
/*懶漢模式
*優點:延遲載入
* 缺點:不加同步的懶漢模式是執行緒不安全的,加了synchronzide之後就變成執行緒安全的了
*/

public class Singleton {
private static Singleton singleton=null;
private Singleton(){
}

public static synchronized Singleton getSingleton() {
if (singleton==null){
singleton =new Singleton();
}

return singleton;
}
}


/*
* 餓漢模式
* 優點:執行緒安全
* 缺點:浪費記憶體空間
* */

import java.util.Set;

public class Singleton {
private static final Singleton singleton=new Singleton();
private Singleton(){
}
public static Singleton getSingleton(){
return singleton;
}
}

/*
* 雙重檢查加鎖模式
* 特點:優化效能又保證執行緒安全
* */

public class Singleton {
private volatile static Singleton singleton; //使用volatile 1.保證了不同執行緒對這個變數進行操作時的可見性,即一個執行緒修改了某個變數的值,這新值對其他執行緒來說是立即可見的。 2.禁止進行指令重排序
private Singleton(){

}
public static Singleton getSingleton(){
if(singleton==null){ //synchronzied消耗效能,提前判斷不必每次都進鎖,提高效能
synchronized (Singleton.class){
if(singleton==null){
singleton=new Singleton();
}
}
}
return singleton;
}
}

相關文章