JAVAJ单例模式的五种实现方式
//饿汉式 class Single1{ private static final Single1 instance = new Single1(); private Single1(){} public static Single1 getInstance() { return instance; } } //懒汉式(线程不安全) class Single2{ private static Single2 instance = null; private Single2(){} public static Single2 getInstance() { if(instance == null){ instance = new Single2(); } return instance; } } //懒汉式(加锁) class Single3{ private static Single3 instance = null; private Single3(){} public static synchronized Single3 getInstance(){ if(instance == null){ instance = new Single3(); } return instance; } } //懒汉式(双重检查) class Single4{ private static Single4 instance = null; private Single4(){} public static Single4 getInstance() { if(instance == null){ synchronized (Single4.class){ if(instance == null){ instance = new Single4(); } } } return instance; } } //懒汉式(枚举实现) enum Single5{ INSTANCE(); private String msg; private Single5(){ System.out.println("单例初始化"); } }