zoukankan      html  css  js  c++  java
  • 编程开发之--设计模式(4)

    package com.lfy.SingletonMode;
    
    /**
     * 3、单例模式之懒汉模式(线程安全)--双重校验锁
     * @author lfy
     * @since 2018/06/03
     * @see   这方式是线程安全的,测试看TestWithMultiThreading.java。<br>
     *        引入情景:在SingletonMode3的例子我们可以看到,synchronized 其实将方法内部的所有语句都已经包括了,
     *        每一个进来的线程都要单独进入同步代码块,判断实例是否存在,这就造成了性能的浪费。那么我们可以想到,其实在第一次已经创建了实例的情况下,
     *        后面再获取实例的时候,可不可以不进入这个同步代码块?
     * */
    public class SingletonMode4 {
    
        //构造器私有化
        private SingletonMode4(){
             
        }
        
        //在类的内部自己创建实例
        private static SingletonMode4 singleton = null;
     
        public static SingletonMode4 getInstance() throws Exception{
            //--双重校验锁
            if(singleton == null){
                synchronized (SingletonMode4.class){
                    if(singleton == null){
                        singleton = new SingletonMode4();
                    }
                }
            }
            return singleton;
        }
    }
  • 相关阅读:
    [模板]洛谷T3369 普通平衡树 链表&普通Treap
    C++语法知识点整理
    [模板]洛谷T3373 线段树 模板2
    [模板]洛谷T3372 线段树 模板1
    [模板]洛谷T3368 树状数组 模板2
    JSON
    code first迁移和部署
    序列化 (C#)
    Linq小记
    文件和注册表
  • 原文地址:https://www.cnblogs.com/ZeroMZ/p/9281965.html
Copyright © 2011-2022 走看看