美文网首页收藏
设计模式-单例

设计模式-单例

作者: go_2021 | 来源:发表于2021-12-31 15:55 被阅读0次

    你所以为的天才,只不过是不断练习的结果而已。

    1. 单例大致分为4种:
      饿汉式, 懒汉式, 懒汉式+双重检验, 内部静态类
    2. 单例 实现有2点要求
    • 要保证类不能外部创建
      构造方法 private
    • 保持唯一实例
      饿汉式 and 内部静态类: 类的静态属性只会执行赋值一次。
      懒汉式 and 懒汉式+双重检验: 加s锁控制创建逻辑,保证只会 new一次。
    1. 内部非静态类可以么?
      不可以,内部非静态类是依赖外部类实例的。
    2. 双检为啥要加 volatile
    图一
    因为第4步骤分为3步,不加 volatile有可能会乱序 132执行。
    图二
    如果132执行,那么图一中的第一步去判断,因为已经指向了内存所以直接走第五步,然后返回的是一个没有初始化好的实例,就会出问题。

    参考:https://www.jianshu.com/p/a9ecac4bd753

    相关文章

      网友评论

        本文标题:设计模式-单例

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