IT-迁哥
发布于 2024-01-31 / 138 阅读
41
0

单例模式示例

记一次单例模式的使用,在开发的过程中,我们常常会遇到一个对象只要创建一次,当然就是我们的spring了,他的bean默认就是单例模式,有些朋友们就会疑惑,为啥要单例? 省内存!内存是非常宝贵的资源,可为了省内存,单例会出现线程安全的问题,这就需要开发者们时刻注意了!

1.饿汉式创建

public class Singleton1 {
    public static Singleton1 singleton1 = new Singleton1();

    private Singleton1() {
    }

    public static Singleton1 getSingleton1() {
        return singleton1;
    }

    public static void main(String[] args) {

        System.out.println(getSingleton1());

        System.out.println(getSingleton1());
    }
}

简单,粗暴,直接new出实例

2.懒汉式创建

public class Singleton2 {
    public static Singleton2 singleton2 = null;

    private Singleton2() {
    }

    public static Singleton2 getSingleton2() {
        if (singleton2 == null) {
            synchronized (Singleton2.class) {
                if (singleton2 == null) {
                    singleton2 = new Singleton2();

                }
            }
        }

        return singleton2;
    }

    public static void main(String[] args) {

        System.out.println(getSingleton2());

        System.out.println(getSingleton2());
    }
}

需要时创建,可以节省内存的使用,采用双if保证创建的为一个对象,很多朋友们不懂外面这个if的含义,下面用模型来模拟

singletonmap.png


评论