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

双检锁

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;
    }
}
相关推荐
运维@小兵11 小时前
Spring AI入门
java·人工智能·spring
Geoking.11 小时前
【设计模式】策略模式(Strategy)详解:把 if-else 变成可切换的算法
java·设计模式·策略模式
代码改变生活-12012 小时前
idea 清除缓存之后重启项目编译失败
java·缓存·intellij-idea
Microsoft Word12 小时前
HashMap面试题总结
java·开发语言
stillaliveQEJ12 小时前
【MyBatis】DML映射
java·mybatis
qq_124987075312 小时前
基于SSM框架的智能密室逃脱信息管理系统(源码+论文+部署+安装)
java·大数据·人工智能·spring boot·后端·毕业设计·计算机毕业设计
ekkcole12 小时前
java实现对excel文件合并单元格(只针对文件)
java·开发语言·excel
no245441012 小时前
RAGFlow 全面接入 MinerU 2.0,支持 pipeline、vlm-transformers、vlm-sglang 三种模式,解析精度大幅度up
java·大数据·人工智能·python·ai·sglang
lkbhua莱克瓦2412 小时前
MySQL事务隔离级别:从并发混乱到数据一致性守护者
java·数据库·mysql·隔离级别