设计模式
2020-06-30 18:10:07 0 举报
AI智能生成
单例模式的几种形式
作者其他创作
大纲/内容
设计模式
单例模式
由来:多个线程操作同一对象,要保证对象的唯一性(实例化过程只实例化一次)解决思路:有且只有一个实例化的过程产生实例化对象,提供返回对象的方法
饿汉式:加载的时候就产生实例化对象
线程安全:安全
懒加载:没有延迟
性能:会一直在内存中,影响性能
懒汉式:开始加载时候为null,等需要的时候再实例化
线程安全:不安全,不能保证实例对象的唯一性
懒加载:可以延迟加载
性能:很好
懒汉式+同步方法:在返回方法中添加synchronized关键字
懒加载:可以懒加载
性能:差,synchronized会将并行会退化为串行处理
懒汉式+同步方法块:在返回方法内部中添加synchronized块
线程安全:不安全
性能:比较好
懒汉式+同步方法块:DCL(双重检查锁并发模式)
问题:因为指令重排可能会引起空指针异常为了解决这个,所以还要在初始化时候加上volatile修饰且放在最后
Holder:声明类的时候成员变量中不声明实例变量,而是放到内部静态类中
性能:很好,这种单例目前广泛使用
枚举:枚举相当于常量,加载的时候实例化一次
懒加载:不可以
枚举+Holder:使用枚举的安全+Holder的懒加载
懒加载:可以
0 条评论
回复 删除
下一页