• 单利模式


    适用场景

    对于定义的一个类,在整个应用程序执行期间只有唯一的一个实例对象。

    单利模式的分类

    饿汉式:一开始就很饿,立马吃到肚子里。

    懒汉式:当别人给我喂食时,我就张口吃掉。

    两者的区别?

    饿汉式:线程安全,由JVM保证。

    懒汉式:线程不安全。

    代码示例

    饿汉式

    //饿汉式单例类.在类初始化时,已经自行实例化 
    public class Singleton1 {
        //私有的默认构造子
        private Singleton1() {}
        //已经自行实例化 
        private static final Singleton1 INSTANCE= new Singleton1();
        //静态工厂方法 
        public static Singleton1 getInstance() {
            return INSTANCE;
        }
    }

    懒汉式 (存在线程安全问题)

    //懒汉式单例类.在第一次调用的时候实例化 
    public class Singleton2 {
        //私有的默认构造子
        private Singleton2() {}
    
        //注意,这里没有final    
        private static Singleton2 single;
    
        //静态工厂方法 
        public static Singleton2 getInstance() {
             if (single == null) {  
                 single = new Singleton2();
             }  
            return single;
        }
    }

    懒汉式 (存在线程安全问题)改进型1

      利用静态内部类特性实现外部类的单例,线程安全并且高效

    public class Singleton3 {
        private static class SingleTonBuilder {
            private static Singleton3 singleTon = new Singleton3();
        }
    
        public static Singleton3 getInstance() {
            return SingleTonBuilder.singleTon;
        }   
    }
    

      

    不积跬步,无以至千里;不积小流,无以成江海。
  • 相关阅读:
    JavaScript-循环
    JavaScript-条件判断
    JavaScript-对象
    Vue快速入门
    Typora中的MarkDown语法
    (已解决)ERROR: In file './docker-compose.yml', service 'networks' must be a mapping not an array
    mac常用快捷键
    Python数据分析
    Python列表和元组
    Selenium工具爬取商品
  • 原文地址:https://www.cnblogs.com/luao/p/14734987.html
Copyright © 2020-2023  润新知