美文网首页
阅读《单例模式 | 双重检测 就比 饿汉式 高级?那 Kotli

阅读《单例模式 | 双重检测 就比 饿汉式 高级?那 Kotli

作者: 普通的程序员 | 来源:发表于2021-02-18 10:26 被阅读0次

    原文地址
    https://mp.weixin.qq.com/s/lE9SXeG89SPFdY-fWZeEDg

    本文讨论的核心问题


    image.png

    kotlin编译后的代码


    image.png

    饿汉式的线程安全原理是,jvm的初始化说线程安全的,这里的安全涉及两个
    1是 有个锁
    2是 重排序,这并不会被 锁住线程外的 线程看见,也就不会出现因为重排序导致的NPE


    image.png

    文章给了一个结论
    『既然饿汉式的单例,也是在首次使用时初始化,这自然就是一种类懒加载的效果。』

    问题来了,为什么推荐用 懒汉?

    我的思考,
    假设有个单例工具类,我只是在splashActivity那里使用单例里的一个静态常数,
    而不需要使用单例的某些方法,其实就是不需要初始化单例 ,如果这个单例初始化耗时严重,这里用饿汉就显得很臃肿且拖慢splashActivity的启动。
    可以使用 holder的懒汉方式写。

    相关文章

      网友评论

          本文标题:阅读《单例模式 | 双重检测 就比 饿汉式 高级?那 Kotli

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