单例模式的双重检查锁

第一层检查是判断实例是否已经被创建

过了第一层检查后就进入synchronized,同步代码块,

在同步代码块中再次检查,防止有多个线程同时进入同步代码块。

实例变量需要用volatile修饰,这样多个线程才能看见

java 复制代码
public class Singleton {
    private volatile static Singleton uniqueInstance;
    
    private Singleton() {}
    
    public static Singleton getInstance() {
        if (uniqueInstance == null) {
            synchronized (Singleton.class) {
                if (uniqueInstance == null) {
                    uniqueInstance = new Singleton();
                }
            }
        }
        return uniqueInstance;
    }
}
相关推荐
川川菜鸟1 分钟前
2025长三角数学建模C题完整思路
c语言·开发语言·数学建模
萌新下岸多多关照2 分钟前
Java中synchronized 关键字
java·开发语言
中国lanwp4 分钟前
使用Maven部署WebLogic应用
java·maven
醍醐三叶5 分钟前
C++文件操作--2 二进制文件操作
开发语言·c++
剽悍一小兔9 分钟前
linux,我启动一个springboot项目, 用java -jar xxx.jar & ,但是没多久这个java进程就会自动关掉
开发语言
li星野14 分钟前
C++:C++内存管理
开发语言·c++
开开心心就好14 分钟前
Word图片格式调整与转换工具
java·javascript·spring·eclipse·pdf·word·excel
溟洵19 分钟前
【C++ Qt】布局管理器
开发语言·c++·qt
Stringzhua23 分钟前
JavaScript【5】DOM模型
开发语言·javascript·ecmascript
我家大宝最可爱27 分钟前
c++动态链接库
开发语言·c++