单例模式的双重检查锁

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

过了第一层检查后就进入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;
    }
}
相关推荐
帅气的你几秒前
终于解决了!Spring Boot 启动慢的 5 个优化点
java
姓蔡小朋友4 分钟前
LUA脚本
开发语言·junit·lua
Croa-vo6 分钟前
Optiver OA 气球节模拟题:拆解系统建模的核心逻辑,附避坑指南
java·数据结构·算法·leetcode·职场和发展
悟能不能悟13 分钟前
Java CheckFailedException会去获取message.properties的内容吗
java·开发语言
shang_xs16 分钟前
Java 25 ScopedValue - 作用域内安全访问的一种实现
java·开发语言·安全
小途软件16 分钟前
基于深度学习的驾驶人情绪识别
java·人工智能·pytorch·python·深度学习·语言模型
向量引擎17 分钟前
[架构师级] 压榨GPT-5.2与Sora 2的极限性能:从单体调用到高并发多模态Agent集群的演进之路(附全套Python源码与性能调优方案)
开发语言·人工智能·python·gpt·ai·ai写作·api调用
小白学大数据25 分钟前
Java 异步爬虫高效获取小红书短视频内容
java·开发语言·爬虫·python·音视频
我命由我1234526 分钟前
Android Jetpack Compose - Compose 重组、AlertDialog、LazyColumn、Column 与 Row
android·java·java-ee·kotlin·android studio·android jetpack·android-studio
solar应急响应27 分钟前
域控宕机!如何强制夺取五大角色恢复业务?
开发语言·php