设计模式之单例模式

单列模式:为了是资源能够共享,只需要赋值和初始化一次大家都能使用

平常哪些用到了单列:监听器本身,日历Calender,IOC容器,配置信息Config....


实现方式:饿汉式,懒汉式,注册登记式(枚举式)、


饿汉式:类加载的时候就立即初始化,并且创建单列对象。

            优点:没有加任何锁,执行效率高,线程绝对安全,用户体验上比懒汉式要好

            缺点:类加载的时候就初始化,不管你用还是不用都会创建对象,浪费了空间



懒汉式:在外部需要使用的时候才初始化实例

            优点:节省内存空间,在需要的时候才产生实例

            缺点:线程不安全



为了解决线程不安全我们可以在懒汉式中加锁,但是加锁后严重影响执行效率。



对比加锁后的执行时间:

没加锁执行的时间



加锁后的执行时间:



可以看出效率相差上百倍(数据上万的情况下)。

为了解决加锁后执行效率过低,有种史上最强单列的写法:运用内部类

这种方式兼顾了饿汉式的内存浪费,也兼顾synchronized性能问题




注册时登记





防止反序列化破坏单列


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值