单例模式 (线程安全)
单例模式是最简单的设计模式之一,保证了一个类只有一个实例,避免了频繁的创建销毁对象而带来性能的损耗。
1.Spring容器中使用的注册表式实现的单例模式,简单来说,就是使用同一个工具类,管理多个不同类的实例创建,每次只需在工具类中注册该类,即可获得该类的实例。
2.像我们在搭建heibernate框架时,是sessionFactory创建session, 用session对象操作数据库的。当多个线程共享session时就会出现数据安全问题,因此企业开发中,我们不会把它设计成单例模式。
/** * 单例模式: 双重锁定检查 * @author wuLei */ public class Single { // 类加载时申明对象, volatile解决多线程共享变量下及时感知变量的最新状态。 private volatile static Single single; //将无参构造私有化, 不允许外界直接new Single()来创建对象。 private Single () {}; // 创建对象 public static Single getInstance() { // 对象不为空才创建 if(single == null) { // 锁住这个类, 防止线程并发重复创建 synchronized (Single.class) { /* 之所以加这个判断是因为第一个线程获得了锁,而第二个线程在等待, * 而第一个线程创建对象后离开,此时第二个线程会获得锁重复创建。 */ if(single == null) { single = new Single(); } } } return single; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix