参考:
https://www.cnblogs.com/zhaoyan001/p/6365064.html
1. 恶汉式
public class Singleton {
private static final Singleton instance = new Singleton();
private Singleton() {
}
public static Singleton getInstance() {
return instance;
}
}
利用静态成员变量创建单例模式,简单、线程安全。
2. 懒汉式
public class Singleton {
private static Class Inner {
private static final Singleton instance = new Singleton();
}
private Singleton() {
}
public static Singleton getInstance() {
return Inner.instance;
}
}
利用静态内部类创建单例模式,线程安全。
public class Singleton {
private static volatile Singleton instance;
private Singleton() {
}
public static Singleton getInstance() {
if (null == instance) {
synchronized (Singleton.class) {
if (null == instance) {
instance = new Singleton();
}
}
}
return instance;
}
}
利用双重检查创建单例模式,线程安全。