两种单例模式

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;
    }
}
相关推荐
岁忧1 小时前
(nice!!!)(LeetCode 每日一题) 679. 24 点游戏 (深度优先搜索)
java·c++·leetcode·游戏·go·深度优先
猿究院--王升4 小时前
jvm三色标记
java·jvm·算法
妮妮学代码4 小时前
c#:TCP服务端管理类
java·tcp/ip·c#
兔老大RabbitMQ4 小时前
git pull origin master失败
java·开发语言·git
探索java5 小时前
Netty Channel详解:从原理到实践
java·后端·netty
tuokuac6 小时前
maven与maven-archetype-plugin版本匹配问题
java·maven
ankleless6 小时前
Spring Boot 实战:从项目搭建到部署优化
java·spring boot·后端
野生技术架构师7 小时前
2025年中高级后端开发Java岗八股文最新开源
java·开发语言
静若繁花_jingjing7 小时前
JVM常量池
java·开发语言·jvm
David爱编程8 小时前
为什么线程不是越多越好?一文讲透上下文切换成本
java·后端