1 饿汉式 public class EagerSingleton { private static final EagerSingleton m_instance = new EagerSingleton(); /** * 私有的默认构造子 */ private EagerSingleton() { } /** * 静态工厂方法 */ public static EagerSingleton getInstance() { return m_instance; } } 2. 懒汉式 public class LazySingleton { private static LazySingleton m_instance = null; /** * 私有的默认构造子,保证外界无法直接实例化 */ private LazySingleton() { } /** * 静态工厂方法,返还此类的惟一实例 */ synchronized public static LazySingleton getInstance() { if (m_instance == null) { m_instance = new LazySingleton(); } return m_instance; }}
饿汉式单例:
在类一进内存时就已经建立好对象。
在程序运行时饿汉式比较安全,因为饿汉式在类一加载时就已经建立好对象,以后不会在改变了,而懒汉式在线程中如果没有synchronized时会导致创建多个对象。所以原则是推荐使用饿汉式。
懒汉式单例:
对象在方法被调用是才开始初始化,叫做对象的延时加载,在类进内存时,对象还没有加载,只有在被调用方法时才建立对象。
单例模式-饿汉式和懒汉式
最新推荐文章于 2023-03-27 16:30:47 发布