• 手写单例模式


    /**
     * 单例模式
     * @author gy2018
     *
     */
    public class SingletonDemo {
        /**
         * 所谓的单例模式,就是整个程序有且仅有一个实例。
         * 该类负责创建自己的对象 并确保只有一个对象被创建。
         * 在java中,一般常用在工具类的实现或创建对象 需要消耗资源
         *
         * 特点:
         * 类构造器私有
         * 持有自己类型的属性
         * 对外提供获取实例的静态方法
         */
        
        
        /**
         * 饿汉模式
         * 线程安全,比较常用,但是一开始就初始化,容易产生垃圾
         */
    //    //创建私有静态的对象
    //    private static SingletonDemo singletonDemo = new SingletonDemo();
    //    //私有构造器
    //    private SingletonDemo(){};
    //    //提供一个共有可调用的方法获取实例
    //    public static SingletonDemo getSingletonDemo(){
    //        return singletonDemo;
    //    }
        
        /**
         * 懒汉模式
         * 线程不安全,延迟初始化,严格意义上来讲不是单例模式
         */
    //    private static SingletonDemo instance;
    //    private SingletonDemo(){};
    //    public static SingletonDemo getInstance(){
    //        if(instance == null){
    //            instance = new SingletonDemo();
    //        }
    //        return instance;
    //    }
        
        /**
         * 双重锁的单例模式,安全且在多线程情况下能保持高性能
         * 进行了两次判断,避免了不要的实例,第二次是为了同步,避免多线程问题。
         * 由于instance = new SingletonDemo()对象的创建在JVM中可能会进行重排序,
         * 在多线程访问下存在风险,使用volatile修饰instance实例变量有效,解决该问题。
         */
        private static SingletonDemo instance;
        private SingletonDemo(){};
        public static SingletonDemo getInstance(){
            if(instance == null){
                synchronized (SingletonDemo.class) {
                    if(instance == null){
                        instance = new SingletonDemo();
                    }
                }
            }
            return instance;
        }
    }

  • 相关阅读:
    Spring Cloud:第四章:Hystrix断路器
    Spring Cloud:第五章:Zuul服务网关
    Spring Cloud:第六章:Config分布式配置
    ES使用org.elasticsearch.client.transport.NoNodeAvailableException: No node available
    for循环使用后contains方法失去效果
    我的分享:第二章:SpringCould专栏
    Spring Cloud:第二章:eureka服务发现
    java程序员怎么创建自己的网站:第四章:做个网站引入广告赚点小钱
    php函数
    each与list的用法
  • 原文地址:https://www.cnblogs.com/gygx110/p/12085174.html
Copyright © 2020-2023  润新知