一、单例介绍
- 单例概念
单例模式是一种对象创建模式,它用于产生一个对象的具体实例,它可以确保系统中一个类只产生一个实例
- 好处
对于频繁使用对象,可以省略创建对象所花的时间,对于那些重量级对象而言,是非常可观的一笔系统开销
由于new操作的次数减少,因而对系统内存的使用频率也会降低,这也将减轻GC压力,缩短GC停顿时间
二、单例的六种写法和各自特点
不足之处:无法对instance实例做延时加载
优化:懒汉
不足之处:在多线程并发下这样的实现是无法保证实例是唯一的
优化:懒汉线程安全
不足之处:性能
优化:DCL
不足之处:JVM的即时编辑器中存在指令重排序的优化
优化:静态内部类 / 枚举
有点:JVM本身机制保证了线程安全 / 没有性能缺陷
原因:static / final
优点:写法简单 / 线程安全
- 饿汉
- 懒汉
- 懒汉线程安全
- DCL(双重线程锁)
- 静态内部类
- 枚举