饿汉
public class HungrySingleton {
private static HungrySingleton instance = new HungrySingleton();
private HungrySingleton() {
}
public static HungrySingleton getInstance() {
return instance;
}
}
懒汉
public class LazySingleton {
// volailte出现在这个位置 是禁止指令重排序
private volatile static LazySingleton instance;
private LazySingleton() {
}
/**
* double check 双重检测
* 对象内部状态有问题 获取到的对象内部数据没有初始化完成
*
* @return
*/
public static LazySingleton getInstance() {
if (instance == null) {
synchronized (LazySingleton.class) {
if (instance == null) {
// 1, 分配内存
// 2,new 对象 (10 5)
// 3,给引用赋值 把内存地址 132
instance = new LazySingleton();
}
}
}
return instance;
}
}