两种单例模式

1.单例模式分为两种,饿汉模式和懒汉模式.以下是饿汉模式:

java 复制代码
public class SingleTonHungry {
    private static SingleTonHungry singleTonHungry = new SingleTonHungry();
    private SingleTonHungry() {

    }
    public static SingleTonHungry getInstance() {
        return singleTonHungry;
    }
}

2.懒汉模式下,需要考虑多线程安全问题,首先是使用synchronized加锁,然后是使用双if判断是否存在实例,最后需要使用volatile保证内存可见性和指令重排序问题.

java 复制代码
public class SingleTonLazy {
    private static volatile SingleTonLazy singleTonLazy = null;

    private static Object lock = new Object();

    private SingleTonLazy() {

    }

    public static SingleTonLazy getInstance() {
        if (singleTonLazy == null) {
            synchronized (lock) {
                if (singleTonLazy == null) {
                    singleTonLazy = new SingleTonLazy();
                }
            }
        }
        return singleTonLazy;
    }
}
相关推荐
客卿12310 分钟前
用两个栈实现队列
android·java·开发语言
java1234_小锋23 分钟前
Java高频面试题:谈谈你对SpringBoot的理解?
java·开发语言·spring boot
空空潍24 分钟前
Spring AI 实战系列(三):多模型共存+双版本流式输出
java·人工智能·spring
彭于晏Yan36 分钟前
SpringBoot整合ECC实现文件签名与验签
java·spring boot·后端
pupudawang38 分钟前
Spring EL 表达式的简单介绍和使用
java·后端·spring
jiankeljx44 分钟前
Spring Initializr创建springboot项目,提示java 错误 无效的源发行版:16
java·spring boot·spring
competes44 分钟前
深圳程序员职业生涯
java·大数据·开发语言·人工智能·java-ee
深蓝轨迹1 小时前
Redis 消息队列
java·数据库·redis·缓存·面试·秒杀
小小小米粒1 小时前
Collection(单列集合)、Map(双列集合),容易搞混的 Collections 工具类。
java·开发语言
skiy1 小时前
springboot+全局异常处理
java·spring boot·spring