1. 程式人生 > >Java單例模式(雙重檢查)

Java單例模式(雙重檢查)

今天又想起了單例模式,看了網上好多文章,加鎖和可見性。自己也寫了一遍單例模式。

public class SingleTon {
    private SingleTon(){
    }
    private static volatile SingleTon singleTon=null;
    public  static  SingleTon getInstance(){
        if(singleTon==null){
            synchronized(SingleTon.class){
                if(singleTon==null){
                    singleTon=new SingleTon();
                }
            }
        }
        return  singleTon;
    }
}

另外一種實現方式就是內部靜態類。

public class SingleTon2 {
    private SingleTon2(){
    }
    private  static class  SingleTonHolder{
      static   SingleTon2 singleTon2=new SingleTon2();
    }
    public  static  SingleTon2 getInstance(){
        return  SingleTonHolder.singleTon2;
    }
}