java单例中的饿汉式和懒汉式

博客介绍了单例模式中的饿汉式和懒汉式。单例模式是一种常见的设计模式,饿汉式和懒汉式是其不同的实现方式,在信息技术领域有广泛应用。

1、饿汉式

2、懒汉式

### 饿汉式懒汉的区别 #### 饱度不同 饿汉式在类加载时就完成了实化,无论后续是否会实际使用该对象。而懒汉则是在首次调用获取实的方法时才进行初始化操作[^1]。 #### 线程安全性差异 由于饿汉式在静态代码块或静态变量定义处完成初始化工作,在多线程环境下天然具备线程安全特性;相比之下,简下的懒汉并不保证线程安全,因为可能存在多个线程几乎同时通过检查发现尚未创建实从而各自尝试创建新实的情况[^2]。 #### 性能表现对比 对于饿汉式而言,虽然它在线程安全方面具有优势,但由于其提前进行了资源分配,如果应用程序启动后很长时间内都不会用到这个,则会造成一定的内存浪费。相反,懒汉按需加载的方可以节省这部分开销,不过为了确保线程安全往往需要引入额外机制如双重校验锁定等措施,这会在一定程度上影响效率[^3]。 ```java // 饿汉式实现 public class SingletonEH { private static final SingletonEH instance = new SingletonEH(); private SingletonEH(){} public static SingletonEH getInstance(){ return instance; } } // 懒汉基本实现(不考虑线程安全) public class SingletonLH { private static SingletonLH instance; private SingletonLH(){} public static SingletonLH getInstance(){ if(instance == null){ instance = new SingletonLH(); } return instance; } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值