美文网首页
day11-14-多线程(多线程-单例设计模式-懒汉式)

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

作者: 姗婷 | 来源:发表于2020-05-29 09:26 被阅读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:延迟加载的单例设计模式

    相关文章

      网友评论

          本文标题:day11-14-多线程(多线程-单例设计模式-懒汉式)

          本文链接:https://www.haomeiwen.com/subject/frszahtx.html