美文网首页
阅读《单例模式 | 双重检测 就比 饿汉式 高级?那 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