首页 > 其他 > 详细

GOF23-单列模式

时间:2019-08-13 18:45:30      阅读:82      评论:0      收藏:0      [点我收藏+]

1.什么是单例模式

一个类只有一个实列,并且提供一个对外访问该实例的全局访问点。

常见应用场景:数据库连接池,项目中读取配置文件的类,servlet也是单列,Spring中的Bean默认也是单列

2.单例模式好处

  • 由于单例模式仅有一个实例,对系统来说性能开销较小,如:应用程序启动读取配置文件时,可以产生一个单列对象,使其驻留在内存中。
  • 单列模式存在对外全局访问点,可以优化环境共享资源的访问。

3.常用单例模式

  1. 饿汉式
  2. 懒汉式
  3. 双重检查锁
  4. 静态内部类
  5. 枚举类

一般情况下,大家知道前两个已经基本ok了,如果再拿后三个跟面试管去“砍”,相信他会对你另眼相看。

  • 饿汉式(线程安全,访问效率高,不能赖加载)

技术分享图片

  • 懒汉式(线程安全,访问效率低,可以懒加载)

技术分享图片

  • 双重检查锁

技术分享图片

技术分享图片

 

  • 静态内部类(推荐使用)

技术分享图片

 

  • 枚举类(基于JVM底层实现,天然线程安全,不能延迟加载)

技术分享图片

4.性能对比

测试代码:

技术分享图片

技术分享图片

五种单列模式耗时如下:

说明:以下只是相对测试结果,机器配置不同可能测试结果有出入。

    

单列模式名

耗时

饿汉式 14ms
懒汉式 4404ms
双重检查锁 18ms
静态内部类 16ms
单例 15ms

GOF23-单列模式

原文:https://www.cnblogs.com/leebaul/p/11347078.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!