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

双检锁

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;
    }
}
相关推荐
SL_staff10 小时前
APS动态重排实践:在多品种小批量场景下实现5分钟插单响应
java·开源·产品
captain37611 小时前
Spring MVC(4)-响应
java·spring boot·后端
Lichee2012 小时前
招行Java 面试知识点梳理:Spring 事务、锁、线程池、集合
java·面试
YDS82912 小时前
Small Spring IOC篇:作用域和FactoryBean
java·后端·spring
Shaoshing12 小时前
LeetCode100 42.接雨水
java·算法·leetcode
枫子有风12 小时前
卡码网盘项目深挖
java·redis·jwt·es·pgvector
郭小李12 小时前
springmvc 拦截器
java·开发语言·前端
大风起兮云飞扬丶12 小时前
Java——日期类
java·开发语言
Wang's Blog13 小时前
Java 项目实战:交友项目 - 联系人管理需求分析
java·开发语言·交友
lazy H13 小时前
【计算机网络】第 13 篇:NAT 和端口映射是什么?为什么本地服务外网访问不了?
java·网络·网络协议·学习·计算机网络·408