设计模式-单例模式

单例模式分为饿汉式、懒汉式

饿汉式:类加载时直接创建实例,类加载时已经生成示例,所以线程安全

java 复制代码
public class SingletonOne {

    //类加载时初始化示例
    private static SingletonOne instance = new SingletonOne();
    private SingletonOne(){};
    private static SingletonOne getInstance() {
        return instance;
    }

    public static void main(String[] args) {
        SingletonOne s1 = getInstance();
        SingletonOne s2 = getInstance();
        System.out.println(s1 == s2);//true
    }
}

懒汉式:用到实例的时候再创建,多线程场景下,创建出的实例可能不唯一,违反了单一实例原则

下方测试代码在多线程模式下,s1可能不等于s2

java 复制代码
public class SingletonTwo {

    private static SingletonTwo instance = null;
    private SingletonTwo(){};
    //用到实例时再创建
    private static SingletonTwo getInstance() {
        if(instance == null) {
            instance = new SingletonTwo();
        }
        return instance;
    }

    public static void main(String[] args) {
        SingletonTwo s1 = getInstance();
        SingletonTwo s2 = getInstance();
        System.out.println(s1 == s2);//true
    }
}
相关推荐
狂奔的sherry2 小时前
单例模式(巨通俗易懂)普通单例,懒汉单例的实现和区别,依赖注入......
开发语言·c++·单例模式
晨星05271 天前
软件设计模式之单例模式
单例模式·设计模式
code bean3 天前
【wpf】WPF开发避坑指南:单例模式中依赖注入导致XAML设计器崩溃的解决方案
单例模式·wpf
是三好5 天前
单例模式(Singleton Pattern)
java·开发语言·算法·单例模式
青春易逝丶5 天前
单例模式
单例模式
YA3335 天前
java设计模式一、单例模式
java·单例模式·设计模式
枫景Maple5 天前
Unity中多线程与高并发下的单例模式
unity·单例模式·游戏引擎
iiiiaaiashah6 天前
单例模式的mock类注入单元测试与友元类解决方案
java·开发语言·单例模式
jingfeng5149 天前
线程池及线程池单例模式
linux·开发语言·单例模式
Brookty10 天前
深入解析Java并发编程与单例模式
java·开发语言·学习·单例模式·java-ee