package com.stuty.singleton;
public class NbSingleton {
private NbSingleton() {
}
public static NbSingleton getInstance(){
return ContainerHolder.HOLDER.instance;
}
private enum ContainerHolder{
HOLDER;
private NbSingleton instance;
ContainerHolder(){
instance=new NbSingleton();
}
}
public static void main(String[] args) {
NbSingleton instance = NbSingleton.getInstance();
System.out.println(instance);
NbSingleton instance2 = NbSingleton.getInstance();
System.out.println(instance2);
}
}
双重检查锁方式
public class DoubleCheckSingle{ private volatile static DoubleCheckSingle INSTANCE; private DoubleCheckSingle(){} public static DoubleCheckSingle getInstance(){ if(INSTANCE == null){ synchronized(DoubleCheckSingle.class){ //double checking Singleton instance if(INSTANCE == null){ INSTANCE = new DoubleCheckSingle(); } } } return INSTANCE; } public static void main(String[] args) { DoubleCheckSingle d1=DoubleCheckSingle.getInstance(); System.out.println(d1); DoubleCheckSingle d2=DoubleCheckSingle.getInstance(); System.out.println(d2); } }