单例模式的双重检查锁

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

过了第一层检查后就进入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;
    }
}
相关推荐
Fcy6484 分钟前
C++ 模版(进阶)(含array解析)
开发语言·c++·stl·array·模版
OKkankan10 分钟前
多态概念及使用
开发语言·数据结构·c++·算法
hudawei99610 分钟前
kotlin协程编译成Android字节码后是什么样的
android·开发语言·kotlin
小周码代码21 分钟前
js 数字金额转为大写 js 金额转大写
开发语言·前端·javascript·js工具
MacroZheng21 分钟前
取代Navicat!全新一代数据库管理工具来了,超级智能!
java·后端·mysql
行走在电子领域的工匠23 分钟前
台达ST:自定义串行通讯传送与接收指令COMRS程序范例五
开发语言·台达plc·st语言编程·串口自定义协议
w***i29423 分钟前
Spring Boot实现定时任务
java·spring boot·后端
BillKu32 分钟前
html2pdf.js使用与配置详解
开发语言·javascript·ecmascript
i***279535 分钟前
springboot集成onlyoffice(部署+开发)
java·spring boot·后端