• 单例模式


    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;
          }
      }
  • 相关阅读:
    【C语言篇】☞ 2. 常量、变量、scanf函数和printf 函数
    【C语言篇】☞ 1. 前言、基础
    React快速入门教程
    数论-欧拉函数
    数论-约数
    数论-质数专题
    匈牙利算法求二分图的最大匹配数
    染色法判断二分图
    Kruskal算法
    Prim算法
  • 原文地址:https://www.cnblogs.com/kangaroohu/p/9604779.html
Copyright © 2020-2023  润新知