单例模式

1 饿汉式
在这里插入图片描述
优点:没有加任何的锁、执行效率比较高,在用户体验上来说,比懒汉式更好。
缺点:类加载的时候就初始化,不管用与不用都占着空间,浪费了内存。

2 懒汉式
1)双重锁式
在这里插入图片描述
优点:延迟加载,双重检查加锁模式线程安全
缺点:不加同步锁的懒汉式是线程不安全的

2)内部类单例
在这里插入图片描述
优点:懒汉式,利用内部类加载机制,没有同步锁,效率高

3 注册式单例
1)容器注册式
在这里插入图片描述
优点:方便管理多个单例类
缺点:存在线程安全问题,需加同步锁

2)枚举
在这里插入图片描述
反编译class文件得到下面的代码:
在这里插入图片描述
jvm自动生成一个饿汉式的单例对象,然后把对象注册到$VALUES数组里;valueOf(String name)方法其实就是注册模式
优点:枚举类是jdk防反射的,同时防止对象序列化破坏单例,是一个最佳的实现方式。

4 ThreadLoacal 单例模式
在这里插入图片描述
优点:天然线程安全
缺点:多线程不能同步

5 UML

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值