Singleton Pattern
饿汉式:
private A(){}//构造器私有
private static A instance=new A();
public static A getInstance(){
return instance;}
懒汉式:
private A(){}//构造器私有
private static A instance=null;
public static A getInstance(){
if(instance==null){//因为只有当instance为空时,才可能存在线程安全问题(即其他线程新建了instance但是本线程判断instance为空)
synchronized(A.class){
if(instance==null){
instance=new A();}}}
return instance;}
静态内部类:
private A(){}
private static class InnerA{
private static A instance=new A();}
public static A getInstance(){
return InnerA.instance;}
前三者构造器是private放置外部new操作,但是会被反射破坏
枚举类:
public enum A{
INSTANCE;
public static A getInstance(){
return INSTANCE;}
}
浙公网安备 33010602011771号