单例模式的双重检查锁

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

过了第一层检查后就进入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;
    }
}
相关推荐
萤丰信息3 小时前
数智重构生态:智慧园区引领城市高质量发展新范式
java·大数据·人工智能·安全·智慧城市
悟空码字3 小时前
MySQL分库分表,从“一室一厅”到“豪华别墅区”的数据库升级之旅
java·后端·mysql
shix .3 小时前
spiderdemo 2-混淆
开发语言·python
Lisonseekpan3 小时前
RBAC 基于角色的访问控制模型详解与实践指南
java·服务器·网络·后端·spring·log4j
lsx2024063 小时前
Bootstrap 页面标题:设计指南与最佳实践
开发语言
黎雁·泠崖3 小时前
C 语言结构体全解析:声明 + 内存对齐 + 位段 + 传参优化
c语言·开发语言
奔跑的小十一3 小时前
ShardingSphere-JDBC 开发手册
java·数据库
世转神风-3 小时前
qt-文件自动按编号命名
开发语言·qt
lkbhua莱克瓦243 小时前
基础-MySQL概述
java·开发语言·数据库·笔记·mysql
月明长歌3 小时前
【码道初阶】Leetcode136:只出现一次的数字:异或一把梭 vs HashMap 计数(两种解法完整复盘)
java·数据结构·算法·leetcode·哈希算法