zoukankan      html  css  js  c++  java
  • 单例模式的双重检查加锁机制

            因为懒汉式的实现是线程安全的,所以会降低整个访问速度,而且每次访问都要判断一次。有没有更好的方式实现呢?可以使用“双重检查枷锁”的方式来实现。

            所谓“双重检查加锁”机制,是指并不是每次静茹getInstance方法都需要同步,而是先不同步。当进入方法后,先检查实力是否存在,如果不存在才进行下面的同步块,着是第一次检查,进入同步代码块,再次检查实力是否存在。如果不存在,就在同步的情况下创建一个实例,这是第二重检查。这样一来,整个过程只需要一次同步,从而减少了多次在同步情况下进行判断所浪费的时间。

    public class Singleton {
        private static Singleton instance = null;
        private Singleton() {}
        public static Singleton getInstance() {
            // 先检查实例是否存在,如果不存在才进入下面的同步块
            if(instance == null) {
                // 同步块,线程安全的创建实例
                synchronized (Singleton.class) {
                    // 再次检查实例是否存在,如果不存在,才真正地创建实例
                    if (instance == null) {
                        instance = new Singleton();
                    }
                }
            }
            return instance;
        }
    }
  • 相关阅读:
    python3之datetime模块
    python3之time模块
    前端面试题01
    前端面试题02
    angularjs
    nodejs
    android 报错记录
    android知识点回顾二
    android知识点回顾
    Broadcast广播代码例子
  • 原文地址:https://www.cnblogs.com/sheng-sjk/p/14176322.html
Copyright © 2011-2022 走看看