day11-14-多线程(多线程-单例设计模式-懒汉式)

2020-05-29  本文已影响0人  姗婷

单例设计模式:保证一个类在内存中只能有一个对象。
饿汉式:一上来我就把对象给你 new 好了,你来了直接就可以拿去“吃”了

class Single
{
    //1.new一个Single对象
    private static Single s = new Single();
    //2.私有化构造函数
    private Single(){}
    //创建一个方法,让外面的类可以拿到对象的引用
    public static Single getInstance()
    {
        return s;
    }   
}

懒汉式(单例的延迟加载方式):一开始我就不给你 new 对象,你来找我,我在给你创建一个对象

class Single
{
    //1.声明一个对象的引用
    private static Single s = null;
    //2.私有化构造函数
    private Single(){}
    //3.判断一下如果对象为null,创建一个对象
    private static Single getInstance()
    {
        if(s==null)
        {
            s= new Single()
        }
        return s;
    }
}

懒汉式解决方法:

class Single
{
    //1.声明一个对象的引用
    private static Single s = null;
    //2.私有化构造函数
    private Single(){}
    //3.判断一下如果对象为null,创建一个对象
    private static Single getInstance()
    {
        if(s==null)
        {
            Synchronized(Single.class)//加了锁,且对象是类名.aclass
                {
                    if(s==null)
                    s= new Single()
                }
        }
        return s;   
    }
}

考点:
1.懒汉式和饿汉式的区别:懒汉式用于实例的延迟加载
2.懒汉式延迟加载出现什么问题?如果多线程访问时会出现安全问题
3.怎么解决?加同步的方式:同步函数或同步代码块都可以,出现低效,用双重判断的形式能解决问题
4.加同步的锁是用哪一个?该类所属的字节码文件对象。类名.class
5:延迟加载的单例设计模式

上一篇下一篇

猜你喜欢

热点阅读