0
点赞
收藏
分享

微信扫一扫

使用AT指令通过ESP8266实现TCP/IP服务器的创建、发送数据和接收数据

是她丫 2024-11-18 阅读 4

目录

单例模式的定义:

饿汉式--单例模式

 定义:

案例: 

优缺点: 

懒汉式--单例模式:

定义:

1)懒汉式单例模式(非线程安全) 

2)线程安全的懒汉式单例模式 (synchronized )

3)双重检查锁定的懒汉式单例模式(线程安全) 


单例模式的定义:

单例模式能保证某个类在程序中只存在唯⼀⼀份实例,⽽不会创建出多个实例. 

单例模式具体的实现⽅式有很多.最常⻅的是"饿汉"和"懒汉"两种.


饿汉式--单例模式

定义:

案例: 

class Singleton {
    // 私有静态成员变量,在类加载时就初始化实例
    private static Singleton instance = new Singleton();
    // 私有构造函数,防止外部通过new关键字创建实例
    private Singleton() {}
    // 公共静态方法,用于获取单例实例
    public static Singleton getInstance() {
        return instance;
    }
}

优缺点: 


懒汉式--单例模式:

定义:

1)懒汉式单例模式(非线程安全) 

public class LazySingleton {
    // 私有静态变量,用于存储单例对象
    private static LazySingleton instance;
    // 私有构造函数,防止外部通过new关键字创建新的实例
    private LazySingleton() {}
    // 公共的静态方法,用于获取单例对象
    public static LazySingleton getInstance() {
        if (instance == null) {
            // 如果实例还未创建,则创建一个新的实例
            instance = new LazySingleton();
        }
        return instance;
    }
}

2)线程安全的懒汉式单例模式 (synchronized )

public class ThreadSafeLazySingleton {
    private static ThreadSafeLazySingleton instance;
    private ThreadSafeLazySingleton() {}
    // 使用synchronized关键字修饰方法,保证在多线程环境下的线程安全
    public static synchronized ThreadSafeLazySingleton getInstance() {
        if (instance == null) {
            instance = new ThreadSafeLazySingleton();
        }
        return instance;
    }
}

3)双重检查锁定的懒汉式单例模式(线程安全) 

public class DoubleCheckedLockingSingleton {
    // 使用volatile关键字保证变量的可见性和禁止指令重排序
    private static volatile DoubleCheckedLockingSingleton instance;
    private DoubleCheckedLockingSingleton() {}
    public static DoubleCheckedLockingSingleton getInstance() {
        if (instance == null) {
            // 第一次检查,提高性能,避免不必要的同步操作
            synchronized (DoubleCheckedLockingSingleton.class) {
                if (instance == null) {
                    // 第二次检查,确保在同步块内也不会创建多个实例
                    instance = new DoubleCheckedLockingSingleton();
                }
            }
        }
        return instance;
    }
}

结语: 写博客不仅仅是为了分享学习经历,同时这也有利于我巩固知识点,总结该知识点,由于作者水平有限,对文章有任何问题的还请指出,接受大家的批评,让我改进。同时也希望读者们不吝啬你们的点赞+收藏+关注,你们的鼓励是我创作的最大动力! 

举报

相关推荐

0 条评论