单例模式的双重检查锁

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

过了第一层检查后就进入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;
    }
}
相关推荐
茂桑4 分钟前
MVCC(多版本并发控制)
java·开发语言·数据库
customer0819 分钟前
【开源免费】基于SpringBoot+Vue.JS医疗报销系统(JAVA毕业设计)
java·vue.js·spring boot·后端·开源
barcke28 分钟前
【深度解析】Java接入DeepSeek大模型:从零实现流式对话+多轮会话管理(完整项目实战) —— SpringBoot整合、API安全封装、性能优化全攻略
java·spring boot
zl97989940 分钟前
MybatisPlus-注解
java·spring·maven
thinkMoreAndDoMore1 小时前
深度学习(3)-TensorFlow入门(常数张量和变量)
开发语言·人工智能·python
杰九1 小时前
【环境配置】maven,mysql,node.js,vue的快速配置与上手
java·vue.js·spring boot·mysql·node.js·maven
wapicn991 小时前
‌挖数据平台对接DeepSeek推出一键云端部署功能:API接口驱动金融、汽车等行业智能化升级
java·人工智能·python·金融·汽车·php
蓝桉8021 小时前
图片爬取案例
开发语言·数据库·python
逸狼2 小时前
【JavaEE进阶】Spring DI
java·开发语言
yonuyeung2 小时前
代码随想录算法【Day54】
java·数据结构·算法