单例模式:确保全局唯一实例

单例模式确保一个类只有一个实例,并提供全局访问点。适用于需要全局唯一对象的场景(如配置管理器、数据库连接池)。

代码示例:

java 复制代码
import java.util.stream.IntStream;

public class ConfigManager {
    public static void main(String[] args) {
        IntStream.range(0,10).parallel()
                .forEach(i -> System.out.println(ConfigManager.getInstance().getConfig("a")));
    }

    // 1. 私有静态实例
    private static volatile ConfigManager instance;

    // 2. 私有构造方法
    private ConfigManager() {}

    // 3. 双重检查锁定获取实例
    public static ConfigManager getInstance() {
        if (instance == null) {
            synchronized (ConfigManager.class) {
                if (instance == null) {
                    instance = new ConfigManager();
                }
            }
        }
        return instance;
    }

    // 业务方法示例
    public String getConfig(String key) {
        return "Value of " + key;
    }
}

**使用场景:**配置文件管理、日志记录器、线程池、连接池

**优点:**节省内存、避免重复创建

**缺点:**需处理多线程安全问题;过度使用会导致代码耦合

相关推荐
小白学大数据2 分钟前
Python 进阶爬虫:解析知识星球 API
开发语言·爬虫·python
季明洵3 分钟前
反转字符串、反转字符串II、反转字符串中的单词
java·数据结构·算法·leetcode·字符串
赴前尘4 分钟前
记一次golang进程执行卡住的问题排查
开发语言·后端·golang
whale fall5 分钟前
如何在同一台电脑里安装32 位 Python 和 64 位 Python
开发语言·笔记·python·学习
虫小宝9 分钟前
查券返利机器人的异步任务调度:Java XXL-Job+Redis实现海量查券请求的分布式任务分发
java·redis·分布式
.清和.15 分钟前
【js】Javascript事件循环机制
开发语言·javascript·ecmascript
Mr_Xuhhh19 分钟前
C语言字符串与内存操作函数模拟实现详解
java·linux·算法
瑞雪兆丰年兮20 分钟前
[从0开始学Java|第十一天]ArrayList
java·开发语言
黄筱筱筱筱筱筱筱22 分钟前
第三次Python练习题
开发语言·python
夜郎king24 分钟前
基于 Java 实现数九天精准计算:从节气算法到工程化落地
java·开发语言