• 设计模式-单例模式


    懒汉式单例模式(DCL)

    /**
     * 懒汉式
     */
    class Singleton {
        // 1、私有构造方法
        private Singleton() {}
        // 2、私有静态实例
        private static volatile Singleton instance;
        // 3、公有获取单例方法
        public static Singleton getInstance() {
            if (null == instance) {
                synchronized (Singleton.class) {
                    if (null == instance) {
                        instance = new Singleton();
                    }
                }
            }
    
            return instance;
        }
    }

    好处:第一次调用才初始化,避免了内存消耗

    坏处:加锁,影响效率

    饿汉式单例模式

    /**
     * 饿汉式
     */
    class Singleton {
        // 1、私有构造方法
        private Singleton() {}
        // 2、私有静态实例
        private static Singleton instance = new Singleton();
        // 3、公有获取单例方法
        public static Singleton getInstance() {
            return instance;
        }
    }

    好处:没有加锁,执行效率高

    坏处:类加载时就初始化了,浪费内存

    静态内部类单例模式

    /**
     * 静态内部类单例(holder)
     */
    class Singleton {
        // 1、私有构造方法
        private Singleton() {}
        // 3、公有获取单例方法
        public static Singleton getInstance() {
            return Holder.INSTANCE;
        }
        // 2、私有静态内部类生成单例
        private static class Holder {
            private static final Singleton INSTANCE = new Singleton();
        }
    }

    好处:内部类只有在外部类被调用才加载,避免了浪费内存,又保证了线程安全

  • 相关阅读:
    OpenCL、CUDA
    最小和最廉价的超级计算机,DIY的
    组装属于您自己的Tesla个人超级计算机
    多处理器系统
    开源项目Spark简介
    基于Cassandra的日志和分布式小文件存储系统【1】
    网络广告js备忘【2】
    网络广告js备忘【1】
    成功产品的意外
    Cassandra HBase和MongoDb性能比较
  • 原文地址:https://www.cnblogs.com/lkc9/p/12486521.html
Copyright © 2020-2023  润新知