欢迎光临散文网 会员登陆 & 注册

DCL 单例模式 —— 双重检查锁

2023-08-21 11:29 作者:J加乐  | 我要投稿

public class Singleton {

    private volatile static Singleton instance; // 使用volatile关键字确保可见性

    private Singleton() {

        // 私有构造函数,防止通过new关键字创建实例

    }

    public static Singleton getInstance() {

        if (instance == null) { // 第一次检查,减少加锁的消耗

            synchronized (Singleton.class) {

                if (instance == null) { // 第二次检查,保证只有一个线程创建实例

                    instance = new Singleton();

                }

            }

        }

        return instance;

    }

}

 

DCL(Double-Checked Locking)单例模式是一种在多线程环境下延迟初始化单例对象的设计模式。它的目的是在尽量保持高性能的同时确保只存在一个实例。

单例模式的作用是确保一个类只有一个实例,并提供全局访问点。DCL单例模式进一步在多线程环境下解决了并发访问的问题。以下是DCL单例模式的作用:

1.      延迟初始化:DCL单例模式延迟初始化实例,即在需要使用实例之前不创建实例。这样可以节省系统资源。

2.      高性能:DCL单例模式通过使用双重检查锁定机制,在多线程环境下只有在第一次获取实例时才会进行同步操作。之后的获取实例操作不需要再进行同步,提高了性能。

3.      线程安全:DCL单例模式通过对实例创建的同步进行双重检查,确保在多线程环境下只有一个线程可以创建实例。这样可以避免多个线程同时创建多个实例的问题。

使用DCL单例模式可以在需要全局唯一实例的情况下,提供高性能和线程安全的解决方案。

 


DCL 单例模式 —— 双重检查锁的评论 (共 条)

分享到微博请遵守国家法律