单例模式的饿汉模式为啥是线程安全的

单例模式的饿汉模式为啥是线程安全的,第1张

线程主要是利用cpu,而内存则是发生线程冲突的地方。内存就是你放对象的地方。所谓不安全,是破坏了数据的特性,这里就是单例。恶汉是预先建好,就这一次,自然不会出现更多实例。而懒汉,请求来时再创建,可能同时处理多个请求,创建多个实例。

static Singelton* GetInstance()这个不是创建指针,而是指明该函数返回的类型是Singelton的指针;

Singelton *s=Singelton::GetInstance()前面的Singelton *s 只是定义个指针,指向的类型是Singelton ,他保留的只是地址,所以不用构造并没有调用任何函数。

Singelton*Singelton::instance_这个只是实例化一次instance_;

最好应该这样做Singelton*Singelton::instance_=NULL否则他就是一个野指针,这样很危险。

设计模式在面试中挺常考的,单例模式是考的最多的。线程安全的单例还有很多种实现方法。可以使用静态内部类、双重校验锁、静态代码块等。

1、饿汉式

public class Singleton(){

    private static Singleton instance = new Singleton()

    private Singleton(){}

    public static Singleton getInstance(){

        return instance

    }

}

2、懒汉式

public class Singleton(){

    private static Singleton instance

    private Singleton(){}

    public static synchronized Singleton getInstance(){

        if(instance==null){

            instance = new Singleton()

        }

        return instance

    }

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6754739.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-27
下一篇 2023-03-27

发表评论

登录后才能评论

评论列表(0条)

保存