// 饿汉式 class Singleton01{ private Singleton01(){ } private final static Singleton01 instance=new Singleton01(); public static Singleton01 getInstance(){ return instance; } } // 饿汉式(静态方法) class Singleton02{ private Singleton02(){ } private static Singleton02 instance; static { instance =new Singleton02(); } public static Singleton02 getInstance(){ return instance; } } // 懒汉式(线程不安全) class Singleton03{ private Singleton03(){ } private static Singleton03 instance; public static Singleton03 getInstance(){ if(instance==null){ instance= new Singleton03(); } return instance; } } // 懒汉式(线程安全,同步方法) class Singleton04{ private Singleton04(){ } private static Singleton04 instance; public static synchronized Singleton04 getInstance(){ if(instance==null){ instance= new Singleton04(); } return instance; } } // 懒汉式(双重检查) class Singleton05{ private Singleton05(){ } private static volatile Singleton05 instance; public static Singleton05 getInstance(){ if(instance==null){ synchronized(Singleton05.class){ if(instance==null){ instance= new Singleton05(); } } } return instance; } } // 静态内部类 class Singleton06{ private Singleton06(){ } private static class SingletonInstance{ private static final Singleton06 INSTANCE=new Singleton06(); } public static Singleton06 getInstance(){ return SingletonInstance.INSTANCE; } } // 枚举 class Singleton07 { private Singleton07(){ } public static enum SingletonEnum { SINGLETON; private Singleton07 instance = null; private SingletonEnum(){ instance = new Singleton07(); } public Singleton07 getInstance(){ return instance; } } }