單例模式

單例模式有懶漢式和餓漢式
先來懶漢式

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

                    singleton = new Singleton();

        }
        return singleton;
    }


}

以上實現單例模式不是線程安全的

if(singleton==null){
            synchronized (Singleton.class) {
                if(singleton == null){
                    singleton = new Singleton();
                }
            }
        }

這種方式交double-check檢查兩次,保證併發安全以及性能。

餓漢式

    private static Singleton singleton =  new Singleton();
    public  Singleton(){}
    public static Singleton getInstance(){
        return singleton;
    }

由於靜態成員是隨類加載而加載的,並且在內存中只有一份。

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