單例模式

餓漢式

public class CustomerSingleton {

private static CustomerSingleton single = new CustomerSingleton();
private CustomerSingleton(){};
public static CustomerSingleton getInstance(){
    return single;
}

懶漢式

public class Singleton{  
    private static Singleton instance = null;  
    private Singleton(){}  
    public static synchronized Singleton newInstance(){  
        if(null == instance){  
            instance = new Singleton();  
        }  
        return instance;  
    }  
}  

多線程內部類實現單例

public class InnerSingleton {

public static  class Singletion{
    private static Singletion single  = new Singletion();
}
public static Singletion getSingletion(){
    return Singletion.single;
}
/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
    Singletion single1 = InnerSingleton.getSingletion();
    Singletion single2 = InnerSingleton.getSingletion();
    System.out.println(single1 +"===="+ single2);
}

}

doubleSingleton

public class DubbleSingleton {

private static volatile DubbleSingleton ds;

public  static DubbleSingleton getDs(){
    if(ds == null){
        synchronized (DubbleSingleton.class) {
            if(ds == null){
                ds = new DubbleSingleton();
            }
        }
    }
    return ds;
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容