代码实现:
public class LazyManSingleTon{ private LazyManSingleTon(){} private static LazyManSingleTon lmst; public static synchronized LazyManSingleTon getInstance(){ if(lmst == null){ lmst = new LazyManSingleTon(); } return lmst; } }懒汉式优点: 使用时才会实例化, 不浪费内存空间, 无线程安全问题 懒汉式缺点: 使用同步锁, 效率低
代码实现
public class HungryManSingleTon{ private HungryManSingleTon(){} private static HungryManSingleTon hmst = new HungryManSingleTon(); public static HungrtManSingleTon getInstance(){ return hmst; } }**饿汉式优点: **不会出现线程安全问题 **饿汉式缺点: **在类加载时实例化, 需要额外占用内存空间
代码实现
public class InnerClassSingleTon{ private InnerClassSingleTon(){} public static InnerClassSingleTon getInstance(){ return InnerClass.getInstance_in(); } static class InnerClass{ private static InnerClassSingleTon icst = new InnerClassSingleTon(); private static InnerClassSingleTon getInstance_in(){ return icst; } } }**静态内部类实现单例的优点: **在调用内部类时才会实例化对象, 不占用额外内存, 线程安全, 效率高
代码实现
public class DoubleCheckLazyManSingleTon{ private static DoubleCheckLazyManSingleTon dclmst; private DoubleCheckLazyManSingleTon(){} private static DoubleCheckLazyManSingleTon getInstance(){ if(dclmst == null){ synchronized(DoubleCheckLazyManSingleTon.class){ if(dclmst == null){ dclmst = new DoubleCheckLazyManSingleTon(); } } } return dclmst; } }