我:
(1)双重检查
// 单例模式:懒加载+线程安全: 一、双重检查方式
public class SingletonDoubleCheck
{
// volatile 避免 指令重排序
private static volatile SingletonDoubleCheck instance;
private SingletonDoubleCheck(){}
// 双重检查
public static synchronized SingletonDoubleCheck getInstance(){
// 检查一: if (instance == null)
if (instance == null) {
synchronized (SingletonDoubleCheck.class){
// 检查二: if (instance == null)
if (instance == null){
instance = new SingletonDoubleCheck();
}
}
}
return instance;
}
}
(2)静态内部类
// 单例模式:懒加载+线程安全: 二、静态内部类方式
public class SingletonInnerStatic
{
// 构造器私有化
private SingletonInnerStatic(){}
// 静态内部类,该类中有一个静态属性 INSTANCE