zoukankan      html  css  js  c++  java
  • lazy初始化和线程安全的单例模式

    1.双检锁/双重校验锁(DCL,即 double-checked locking)

    JDK 版本:JDK1.5 起

    是否 Lazy 初始化:

    是否多线程安全:

    实现难度:较复杂

    描述:这种方式采用双锁机制,安全且在多线程情况下能保持高性能。
    getSingleton() 的性能对应用程序很关键。

    package com.advance.singleton;
    
    /**
     * @Auther: 谷天乐
     * @Date: 2018/9/17 21:02
     * @Description:
     */
    
    public class Singleton {
        private volatile static Singleton singleton;
        private Singleton (){}
        public static Singleton getSingleton() {
            if (singleton == null) {
                synchronized (Singleton.class) {
                    if (singleton == null) {
                        singleton = new Singleton();
                    }
                }
            }
            return singleton;
        }
    
        public static void main(String[] args) {
            Singleton s1 = getSingleton();
            Singleton s2 = getSingleton();
            System.out.println(s1==s2);
        }
    }
  • 相关阅读:
    解析HTTP协议六种请求方法
    金蝶
    普元
    中间件
    [CTSC2008] 网络管理
    【Uva 10498】满意值
    【SPOJ839】最优标号
    bzoj2879 [Noi2012]美食节
    bzoj3144 [Hnoi2013]切糕
    bzoj3112 [Zjoi2013]防守战线
  • 原文地址:https://www.cnblogs.com/Java-Starter/p/9664961.html
Copyright © 2011-2022 走看看