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

双检锁

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;
    }
}
相关推荐
日月云棠1 小时前
JAVA数据结构与算法 - 基础:常用集合简述
java·算法
噢,我明白了1 小时前
MyBatis-Plus的引入和配置
java·tomcat·mybatis
日月云棠1 小时前
JAVA数据结构与算法 - 基础:BlockingQueue
java·算法
哪吒编程1 小时前
GPT 5.5 Thinking深度思考了十几分钟,给我挖了一个排查一周的并发大坑
java
likerhood2 小时前
设计模式 · 享元模式(Flyweight Pattern)java
java·设计模式·享元模式
Royzst2 小时前
图书管理案例
java·开发语言
带刺的坐椅2 小时前
SolonCode v2026.5.21 发布,Web 能看项目,IM 能找队友
java·ai编程·数字员工·soloncode·终端智能体
dunky2 小时前
副本机制与 ISR 设计:为什么 Kafka 这么快又这么可靠
java
夕除2 小时前
spring boot 9
java·mysql·spring
执明wa2 小时前
从 T 到协变逆变
java·开发语言·数据结构