美文网首页
单例模式(懒汉式)

单例模式(懒汉式)

作者: bin丶 | 来源:发表于2020-11-28 19:39 被阅读0次


以下方式均不推荐开发使用,仅供学习

I. 线程不安全的懒汉式

package singleton;

/**
 * 懒汉式(懒汉式-线程不安全)
 */
public class Singleton_3 {

    private static Singleton_3 instance;

    private Singleton_3(){}

    // 对外提供一个静态方法。 仅有在被使用时才创建
    public static Singleton_3 getInstance() {
        if (instance == null) {
            instance = new Singleton_3();
        }

        return instance;
    }
}

优点

  • 不会造成内存浪费,因为只有在被使用时才开始创建实例

缺点

  • 为何线程不安全?
  • 答: 因为在多线程的情况下,一个线程进入了if(instance == null)判断语句块,还未来得及执行,另一个线程也来到了这个判断语句,这时会产生多个实例,所以多线程模式下不可使用这种方式。

II. 线程安全的懒汉式

package singleton;

/**
 * 懒汉式(懒汉式-线程安全)
 */
public class Singleton_4 {

    private static Singleton_4 instance;

    private Singleton_4(){}

    // 对外提供一个静态方法。 仅有在被使用时才创建
    // 加入 synchronized 关键字, 解决线程安全问题
    public static synchronized Singleton_4 getInstance() {
        if (instance == null) {
            instance = new Singleton_4();
        }

        return instance;
    }
}

优点

  • 相较于 I 实现了线程安全

缺点

  • 效率低下,每个线程在想获得类的实例的时候,执行getInstance()都要去同步一下。

相关文章

  • 单例模式Java篇

    单例设计模式- 饿汉式 单例设计模式 - 懒汉式 单例设计模式 - 懒汉式 - 多线程并发 单例设计模式 - 懒汉...

  • kotlin实现单例模式

    1.懒汉式实现单例模式 2.线程安全懒汉式实现单例模式 3.双重校验懒汉式实现单例模式 4.静态内部类方式实现单例模式

  • Singleton 单例模式

    饿汉式单例模式 饿汉式单例模式 通过静态代码块增加异常处理 懒汉式单例模式 存在线程安全问题 懒汉式单例模式 解决...

  • 单例(Singleton)

    单例设计模式 单例模式的创建 饿汉式1 饿汉式2 懒汉式 优化后的懒汉式(线程安全): 饿汉式与懒汉式区别 单例模...

  • 2018-05-14

    单利设计模式 懒汉式 单例模式 饿汉式 单利模式 懒汉式与饿汉式的区别: 双重锁式 单例模式 (DCL )

  • 单例模式

    单例,全局只有一个实例 单例模式可以分为懒汉式和饿汉式: 懒汉式单例模式:在类加载时不初始化。 饿汉式单例模式:在...

  • 第3章 创建型模式-单例模式

    ■ 饿汉式单例类 ■ 懒汉式单例类 ■ 单例模式的实例

  • 大话设计模式之_单例模式

    大话设计模式之___单例模式 什么是单例模式单例模式有哪些(会顺带讲些懒汉式的性能优化)懒汉式与饿汉式的区别 什么...

  • Android设计模式(单例模式)

    目录 1.单例模式简介 2.单例模式关键点 3.单例模式UML图 4.单例模式的实现方式饿汉式懒汉式同步锁懒汉式D...

  • 单例模式

    单例模式(饿汉式) 单例模式(懒汉式) 解决两种的弊端的单例模式(双锁)

网友评论

      本文标题:单例模式(懒汉式)

      本文链接:https://www.haomeiwen.com/subject/mqscwktx.html