概念
单例模式:是一种对象创建型模式,用来确保程序中一个类最多只有一个实例,并提供访问这个实例的全局点。
单例模式的解决方案
- 隐藏类的构造方法,用private修饰符修饰构造方法.
- 定义一个public的静态方法(getInstance()) ,返回这个类唯一静态实例。
双重检查的单例模式
public class Singleton {
private volatile Singleton instance = null;
public Singleton getInstance() {
if (instance == null) {
synchronized(this) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
关键字volatile 保证多线程下的单例:原因:https://blog.csdn.net/shadow_zed/article/details/79650874
原理:https://blog.csdn.net/anjxue/article/details/51038466?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control
推荐方法:
public class Singleton {
private Singleton () {};
static class SingletonHolder {
static Singleton instance = new Singleton();
}
public static Singleton getInstance(){
return SingletonHolder.instance;
}
}