单例模式的代码总结
懒汉式单例类
/** * 懒汉式单例类 * 懒汉式是典型的时间换空间 * @author MJ * */ public class LazySingleton { private static LazySingleton instance = null; // 私有构造方法 private LazySingleton() { } // 静态工厂方法 public static synchronized LazySingleton getInstance() { if (instance == null) { instance = new LazySingleton(); } return instance; } }
饿汉式单例类
/** * 饿汉式单例类 * 饿汉式是典型的空间换时间 * @author MJ * */ public class EagerSingleton { private static EagerSingleton instance = new EagerSingleton(); /** * 私有构造方法 */ private EagerSingleton(){} //静态工厂方法 public static EagerSingleton getInstance() { return instance; } }
双重检查加锁
/** * 双重检查加锁 * 提示:由于volatile关键字可能会屏蔽掉虚拟机中一些必要的代码优化,所以运行效率并不是很高。因此一般建议,没有特别的需要,不要使用。 * 也就是说,虽然可以使用“双重检查加锁”机制来实现线程安全的单例,但并不建议大量采用,可以根据情况来选用。 * * @author MJ * */ public class Singleton { private volatile static Singleton instance = null; private Singleton() { } // 静态工厂方法 public static Singleton getInstance() { // 先检查实例是否存在,如果不存在才进入下面的同步快 if (instance == null) { // 同步块,线程安全的创建实例 synchronized (Singleton.class) { // 再次检查实例是否存在,如果不存在才真正的创建实例 if (instance == null) { instance = new Singleton(); } } } return instance; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)