两种单例模式

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;
    }
}
相关推荐
qq_4850152110 分钟前
MyBatis-Plus 3.x FieldStrategy 作用
java·数据库·mybatis
lhldsg12 分钟前
课程排课系统实战指南:从数据库设计到算法调优全流程解析
java·数据库·算法·小程序
光电的一只菜鸡17 分钟前
高通tuning中eis需要调什么
java·开发语言·前端
API快乐传递者1 小时前
1688 跨境电商 API 接口实战指南:从寻源到代采的全链路技术方案
java·前端·数据库
孔明click331 小时前
不想写代码,但想要集成一个登录页面?Sa-Token-Quick-Login 帮你实现!
java·sa-token·开源·springboot·登录·权限·权限认证
曹牧1 小时前
C#与Java后台交互
java·windows·microsoft·c#
张晓祥-长草颜团子1 小时前
【重庆两江新区歌词】
java
东小西1 小时前
【SAA实战】第 2 篇:模型与消息——ReactAgent 怎么挑模型、怎么传消息
java·后端·spring
码匠许师傅2 小时前
【C++ 面试真题】35. 聊聊 C++ 的万能引用(T&&)和完美转发(std::forward)
java·c++·面试
十年Java程序媛2 小时前
注解已经加上,但是事务没有回滚?拆解 AOP 代理底层原因 + 代码示例
java