- 之前学习的单例模式懒汉式
- 在多线程下延迟加载时,
- 会出现同步不安全的情况。
- 学习了多线程后,在创建对象时,
- 采用双重判断并加锁的方式保证只创建一个对象。
-
-
- public class Test2 {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- }
- }
- // 延迟加载的单例设计模式 即懒汉式
- class Single {
- // 初始化null,调用时再创建对象,延迟加载
- private static Single s = null;
- // 私有构造函数 外部不能创建该类对象
- private Single() {
- }
- // 对外提供一个获取该类对象的方法
- public static Single getInstance() {
- // 双重判断,解决多线程安全问题
- if (s == null) {
- // 锁
- synchronized (Single.class) {
- if (s == null) {
- // 创建对象
- s = new Single();
- }
- }
- }
- // 返回对象
- return s;
- }
- }
复制代码 |
|