• 单例模式---线程安全且懒汉模式


    /**
     * 单例模式:懒汉式基础上加入并发控制,保证多线程环境下,对外存在一个对象
     *1.构造器私有化-->避免外部new构造器
     *2.提供私有的静态属性-->存储对象的地址
     *3.提供公共的静态方法-->获取属性
     */
    public class DoubleCheckedLocking {
        //没有volatile其他线程可能访问一个没有初始化过的对象
        //2.提供私有的静态属性
        private static volatile DoubleCheckedLocking instance;
    
        //1.构造器私有化
        private DoubleCheckedLocking(){
        }
    
        //3.提供公共的静态方法
        public static DoubleCheckedLocking getInstance(){
            //再次检测 避免不必要的同步,已经存在对象
            if(null != instance){
                return instance;
            }
            synchronized (DoubleCheckedLocking.class) {
                if (null == instance) {
                    instance = new DoubleCheckedLocking();
                    //1.开辟空间 //2.初始化对象信息 3.返回对象的引用地址
                }
            }
            return  instance;
        }
    
        public static void main(String[] args){
            Thread t = new Thread(()->{
                System.out.println(DoubleCheckedLocking.getInstance());
            });
            t.start();
            System.out.println(DoubleCheckedLocking.getInstance());
    
        }
  • 相关阅读:
    没有人可以阻碍我前进的脚步 , 遇佛杀佛,遇魔杀魔
    1/2 2008
    错过,用心
    公会平台
    久违的、讨厌的感觉
    CSS选择符
    jquery ajax
    2013年职业规划
    js小助手
    css 伪类
  • 原文地址:https://www.cnblogs.com/shanheyongmu/p/12060712.html
Copyright © 2020-2023  润新知