天天看點

單例模式(DCL, 靜态内部類, 枚舉)

雙重檢查鎖(double checked locking)

隻在第一次調用getInstance時, 進行同步加鎖

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

           

靜态内部類實作

class Singleton2{
    private Singleton2(){}

    private static class innerClass{
        private static Singleton2 instance =new Singleton2();
    }
    public static Singleton2 getInstance(){
        return innerClass.sa;
    }
}
           

枚舉

enum Singleton3{
	instance;
}