单例模式-懒汉式
作者:互联网
/**
懒汉式
volatile 防止指令重排序
1 分配空间
2 引用赋值
3 初始化操作
*/
public class LazySingleton {
private static volatile LazySingleton lazySingleton;
private LazySingleton() {
}
public static LazySingleton getInstance() {
if (lazySingleton == null) {
synchronized (LazySingleton.class) {
// 这里加判断是防止还未new对象的时候另一个线程进入到前面的那个if判断里面, 这样就会导致创建2份对象
if (lazySingleton == null) {
lazySingleton = new LazySingleton();
}
}
}
return lazySingleton;
}
}
public class Test {
public static void main(String[] args) {
new Thread(() -> {
LazySingleton instance1 = LazySingleton.getInstance();
// com.example.SpringBootTest1.shejimoshi.singleton.LazySingleton@6a51da45
System.out.println(instance1);
}).start();
new Thread(() -> {
LazySingleton instance2 = LazySingleton.getInstance();
// com.example.SpringBootTest1.shejimoshi.singleton.LazySingleton@6a51da45
System.out.println(instance2);
}).start();
}
}
标签:getInstance,LazySingleton,lazySingleton,模式,public,static,单例,new,懒汉 来源: https://www.cnblogs.com/ladeng19/p/15821223.html