单例模式代码

以下是一个使用双检锁实现的线程安全单例模式示例代码:

复制代码
public class Singleton {
    // volatile确保多线程环境下的可见性
    private static volatile Singleton instance;

    // 私有构造函数防止外部实例化
    private Singleton() {
        // 初始化逻辑
    }

    public static Singleton getInstance() {
        // 第一次检查(避免不必要的同步)
        if (instance == null) {
            synchronized (Singleton.class) {
                // 第二次检查(防止多线程重复创建)
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}

关键点说明:

  1. volatile 关键字确保多线程环境下变量的可见性
  2. 双重检查锁定(双检锁):
    • 外层检查避免每次调用都进入同步块
    • 内层检查防止多个线程同时通过第一层检查后重复创建实例
  3. 私有构造函数阻止外部直接实例化
  4. 同步锁使用类对象作为锁,确保线程安全

此实现满足:

  • 延迟初始化(懒加载)
  • 线程安全
  • 高效(仅在首次初始化时同步)
相关推荐
秋饼9 分钟前
MCP 2026-07-28 无状态协议大改版:Spring AI 2.1 多轮往返请求与网关路由落地
java·ai·技术分享·后端开发
SL_staff1 小时前
JVS-BI 实战:业务人员如何用零代码 ELT + 可视化配置构建实时经营分析闭环
java·spring·全栈
SL_staff2 小时前
企业AI落地难?JVS-AI渐进式实践:安全可控、小切口验证、标准化沉淀与规模化复制
java·开源·aigc
David猪大卫2 小时前
【C++修炼】map 和 set 的使用
c语言·开发语言·数据结构·c++·经验分享·笔记·学习
SL_staff3 小时前
JVS数字底座实践:构建企业级统一内容管理平台的技术路径
java·产品
nice_lcj5203 小时前
【从零理解 Spring AI · 12】MCP 的两种角色:做客户端还是做服务端
java·后端·spring·spring ai·ai应用开发
fengci.3 小时前
CTF2MISC中等部分
开发语言·前端·学习
桦说编程4 小时前
TransmittableThreadLocal 解读:从 CRR 机制到上下文所有权
java·后端·源码
xys_6785 小时前
JavaEE通关手册:初识Java
java·开发语言
文丑颜不良啊5 小时前
LeetCode2461~2480题目解析
java·leetcode