单例模式的双重检查锁

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

过了第一层检查后就进入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;
    }
}
相关推荐
666HZ66610 小时前
程序设计竞赛java
java·开发语言
三不原则10 小时前
AIOps 技术架构全景:数据采集→分析→自动化执行全流程
java·架构·自动化
开发者小天10 小时前
python查询天气小示例
开发语言·python
知行合一。。。10 小时前
Python--04--数据容器(元组)
开发语言·python
今天多喝热水10 小时前
SpEL(Spring Expression Language) 表达式
java·后端·spring
wasp52010 小时前
Hudi 客户端实现分析
java·开发语言·人工智能·hudi
学海无涯书山有路10 小时前
Android LiveData + MVVM 新手入门教程(基于 XML+Java)
android·xml·java
Hello.Reader10 小时前
Flink 2.0 从 flink-conf.yaml 到 config.yaml 的正确打开方式(含迁移与最佳实践)
java·前端·flink
李慕婉学姐10 小时前
【开题答辩过程】以《基于uni-app的手账记录小程序的设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
java·小程序·uni-app
啊阿狸不会拉杆10 小时前
《计算机操作系统》 第十一章 -多媒体操作系统
开发语言·c++·人工智能·os·计算机操作系统