概念
单例模式(Singleton Design Pattern):一个类只允许创建一个对象(或者实例)
要解决的问题/用途
- 资源访问冲突
- 表示全局唯一类,如配置信息类、连接池类、ID生成器类等
如何实现
实现方式 | 概念 | 是否线程安全 | 是否支持延迟加载 | 适用场景 |
---|---|---|---|---|
饿汉式 | 单例实例在类加载的时候 instance静态实例就已经创建并初始化好了 |
是 | 否 | 详见代码 |
懒汉式 | 单例实例在第一次被使用时构建 | 可以加锁实现线程安全 | 是 | 详见代码 |
双重检测 | 只要instance被创建之后,即便再调用getInstance()函数也不会再进入到加锁逻辑中了。 所以,这种实现方式解决了懒汉式并发度低的问题 |
是 | 是 | 详见代码 |
静态内部类 | java特有,在此不做讲解 | - | - | - |
枚举 | java特有,在此不做讲解 | - | - | - |
1.饿汉式
1 | package main |
2.懒汉式
1 | package main |