单例模式_双检锁与静态内部类

双检锁

java 复制代码
class Solution {
    private volatile Solution instance;

    public Solution getInstance() {
        Solution temp = instance;
        if (temp == null) {
            synchronized (this) {
                if (temp == null) {
                    temp = instance = new Solution();
                }
            }
        }
        return temp;
    }
}

为什么需要使用 volatile

如果不使用 volatile,会发生什么

为什么使用 synchronized

不使用 synchronized 会发生什么

为什么要使用双重检查

为什么需要先判断再加锁

synchronized 能保证可见性,为什么还需要 volatile

静态内部类

java 复制代码
class Solution {
    private static class Holder {
        private static final Solution INSTANCE = new Solution();
    }

    public Solution getInstance() {
        return Holder.INSTANCE;
    }
}
相关推荐
OxYGC16 分钟前
[AI工程] Spring AI 第十四篇:Agent 五种模式在 2.0 里怎么写
java·spring·ai·ai编程
code2cat17 分钟前
【随笔】从聊天到调用工具:理解MCP在AI应用中的位置
java·人工智能
2501_9339232525 分钟前
Spring Bean作用域揭秘:单例、原型、请求与会话的区别
java·后端·spring·java-ee
学编程就要猛43 分钟前
基于Spring AI 的智能聊天机器人
java·spring ai·chat robot
修炼室1 小时前
Java开发工程师笔试经验贴【高频知识】
java
木井巳1 小时前
【记忆化搜索】最长递增子序列
java·算法·leetcode·深度优先·剪枝·推荐算法
杨杨杨大侠1 小时前
知识库已经有了,Java 程序员还要做什么?Spring AI RAG 实战
java·openai·ai编程
伊信1 小时前
Spring AI 基础学习与应用
java·后端
夜郎king1 小时前
基于 Java + Playwright 实现网站自动访问与数据采集(以腾讯云开发者社区为例)
java·playwright·网页数据获取
Anastasiozzzz1 小时前
重新定义 Agent 基建:Redis 在现代 AI 与智能体系统中的工程实践
java·人工智能·redis·ai