单例模式的双重检查锁

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

过了第一层检查后就进入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 分钟前
302-基于Python的安卓应用市场数据可视化分析推荐系统
开发语言·python·信息可视化·毕业设计·fastapi
LiLiYuan.17 分钟前
【Java 6种线程状态】
java·开发语言
加号31 小时前
【C#】 WebAPI 接口设计与实现指南
开发语言·c#
lly2024061 小时前
jQuery 删除元素详解
开发语言
itzixiao1 小时前
L1-047 装睡 (5分)[java][python]
java·开发语言·python
林恒smileZAZ1 小时前
Three.js实现更真实的3D地球[特殊字符]动态昼夜交替
开发语言·javascript·3d
用户298698530141 小时前
不用无头浏览器,Java 如何将 HTML 转成图片?
java·后端
Chengbei112 小时前
红队专属Bing Dork自动化工具,敏感信息侦察效率拉满、自动生成可视化信息泄露审计报告
java·人工智能·安全·web安全·网络安全·自动化·系统安全
敖正炀2 小时前
集合-Set深入解析
java
|_⊙2 小时前
C++ 智能指针
开发语言·c++