单例模式的双重检查锁

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

过了第一层检查后就进入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;
    }
}
相关推荐
小二李几秒前
第12章 koa框架重构篇 - Koa框架项目重构
java·前端·重构
cike_y4 分钟前
JavaBean&MVC三层架构
java·架构·mvc·javaweb·java开发
鸡吃丸子4 分钟前
React Native入门详解
开发语言·前端·javascript·react native·react.js
盼哥PyAI实验室7 分钟前
Python YAML配置管理:12306项目的灵活配置方案
开发语言·python
漂亮的小碎步丶8 分钟前
【启】Java中高级开发51天闭关冲刺计划(聚焦运营商/ToB领域)
java·开发语言
hd51cc16 分钟前
MFC运行时
开发语言·mfc
wniuniu_19 分钟前
ceph一些细节处理
开发语言·ceph
hd51cc19 分钟前
异常处理(Exception Handling)
开发语言
SadSunset21 分钟前
(19)Bean的循环依赖问题
java·开发语言·前端
⑩-22 分钟前
Java自定义业务异常类
java