• 单例模式


    1. 懒汉式:线程是不安全的,若多个线程同时进入if(uniqueInstance==null)
      public class Singleton {
          private static Singleton uniqueInstance;
          private Singleton() {
          }
          public static Singleton getUniqueInstance() {
              if (uniqueInstance == null) {
                  uniqueInstance = new Singleton();
              }
              return uniqueInstance;
          }
      }
    2. 懒汉式线程安全:一个线程进入方法后,其他试图进入的线程必须等待,性能有损耗
      public static synchronized Singleton getUniqueInstance() {
          if (uniqueInstance == null) {
              uniqueInstance = new Singleton();
          }
          return uniqueInstance;
      }
    3. 双重校验锁:先判断是否已经实例化,如果没有才对实例化语句加锁,内部是if(==null)是为了防止两个线程同时进入外层的if语句块内

      public class Singleton {
          private volatile static Singleton uniqueInstance;
          private Singleton() {
          }
          public static Singleton getUniqueInstance() {
              if (uniqueInstance == null) {
                  synchronized (Singleton.class) {
                      if (uniqueInstance == null) {
                          uniqueInstance = new Singleton();
                      }
                  }
              }
              return uniqueInstance;
          }
      }
  • 相关阅读:
    [STL]string类型的getline函数
    win10热键体验
    二分查找
    时间复杂度和空间复杂度分析
    url中?的作用
    结构体的使用
    【学CG系列】web之审查元素
    STL——翻转字符串
    8.17积累(杂)
    input开关按钮
  • 原文地址:https://www.cnblogs.com/kangaroohu/p/9604779.html
Copyright © 2020-2023  润新知