<h4 id="单例模式">单例模式
- 饿汉模式
- 初始化时间 类加载到JVM时
- 缺点 类加载慢
- 优点
- 获取对象速度快
- 避免多线程的同步问题
- 懒汉模式【线程不安全】
- 懒汉模式【线程安全】
- 双重检查【DCL】
- 特点:volatile修饰类变量【单例变量】
- 缺点
- volatile或多或少性能,但为了正确性的牺牲是值得的。
- 第一次加载响应慢一些
- DCL失效【高并发下发生概率很小,但并不是说一定不发生】 参考[
- 优点
- 效率高:两次判空,减少不必要同步【线程安全的懒汉模式,每次都要加锁判空】
- 资源利用率高
-
静态内部类 【推荐】
- 初始化时间 第一次调用静态方法时,内部类完成JVM的加载时,完成外部类单例的初始化
-
优点 保证单例,保证线程安全
说明 1.到此为止的单例模式,在进行反序列化时,如果不对readResolve()方法做处理,则会生成新的对象,而不再是单例 2.反序列化时,能创建对象实例的方法是:readObject()
-
枚举单例
- 特点:
- 枚举天然的线程安全
- 枚举天然的反序列化时不会创建新的对象。
- 特点:
说明: 1.单例模式首推:静态内部类de方式 2.其次是:DCL方式