设计模式之单例模式(Singleton)

 时间:2024-10-12 11:37:37

1、懒汉式,非线程安全不支持多线程,因为没有加锁,所以从严格意义上它并不是单例模式。代码如下:

设计模式之单例模式(Singleton)

2、懒汉式,线程安全具备很好的lazy loading,能够在多线程中很好的工作,但效率很低。优点:第一次调用才初始化,避免内存浪费。缺点:必须加锁synchronized才能保证单例,但加锁会影响效率。实现代码如下:

设计模式之单例模式(Singleton)

3、饿汉式线程安全,这种方式比较常见,但容易产生垃圾对象优点:没有加锁,执行效率会提高。缺点:类加载时就初始化,浪费内存。代码实现如下:

设计模式之单例模式(Singleton)

4、双检锁/双重校验锁 DCLjdk1.5版本开始,lazy初始化,线程安全,采用双锁机制,安全且在多线程情况下能保持高性能。代码如下:

设计模式之单例模式(Singleton)

5、静态内部类能达到双检锁方式一样的效果,实现更加简单。对静态域使用延迟初始化,应使用这种方式而不是双检锁方式。代码如下:

设计模式之单例模式(Singleton)

6、枚举jdk1.5起,非lazy初始化,线程安全。这种实现方式还没被广泛采用,但这是实现单例模式的最佳方法。更简洁,自动支持序列化机制,绝对防止多次实例化。代码如下:

设计模式之单例模式(Singleton)

7、六种单例实现方式测试及结果

设计模式之单例模式(Singleton)
  • 如何在SQL Database Studio中修改数据库连接
  • Navicat怎样新建SQLite数据库?
  • phpstudy安装与使用
  • 图解Maven安装与配置
  • eclipse修改文件字体大小及颜色
  • 热门搜索
    关于环境保护的手抄报 有关于读书的手抄报 关于春节的语文手抄报 放飞科技梦想手抄报 手抄报版图 法制教育的手抄报 手抄报简单边框 关于诚信手抄报内容 关于自信的手抄报 争做最美少年手抄报