单例模式的双重检查锁

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

过了第一层检查后就进入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;
    }
}
相关推荐
ictI CABL9 分钟前
MySQL数据库的数据文件保存在哪?MySQL数据存在哪里
java
鱼鳞_12 分钟前
Java学习笔记_Day20(二叉树)
java·笔记·学习
番茄去哪了18 分钟前
任务调度功能实现
java·开发语言·spring boot
想你的液宝27 分钟前
Spring Boot 中基于 AOP 的 Controller 统一日志打印方案
java·后端
天草二十六_简村人31 分钟前
阿里云SLS采集jvm日志(上)
java·运维·数据库·后端·阿里云·容器·云计算
Beginner x_u38 分钟前
前端八股整理|JavaScript|高频小题 01
开发语言·前端·javascript
_MyFavorite_40 分钟前
JAVA重点基础、进阶知识及易错点总结(15)缓冲流 + 转换流
java·开发语言·spring boot
qq_333120971 小时前
头歌答案--爬虫实战
java·前端·爬虫
TT哇1 小时前
【项目】从“本地能跑”到“生产级部署”:Java + Docker 自动化部署深度复盘
java·docker·自动化
摇滚侠1 小时前
JAVA 项目教程《苍穹外卖-11》,微信小程序项目,前后端分离,从开发到部署
java·开发语言·微信小程序