zoukankan      html  css  js  c++  java
  • java设计模式----单例模式

    单例模式:

      确保一个类只有一个实例,并提供一个全局访问点

    饿汉式:(线程安全)

    public class Singleton {
      private static Singleton uniqueInstance = new Singleton();

      private Singleton() {

      }

      public static Singleton getInstance() {
        return uniqueInstance;
      }
    }

    懒汉式:(线程不安全)

    public class Singleton {
      private static Singleton uniqueInstance;

      private Singleton() {

      }

      public static Singleton getInstance() {
        if (uniqueInstance == null) {
          uniqueInstance = new Singleton();
        }
        return uniqueInstance;
      }
    }

    双重检查加锁:(线程安全)

    public class Singleton {
      private volatile static Singleton uniqueInstance;

      private Singleton() {

      }

      public static Singleton getInstance() {
        if (uniqueInstance == null) {
          synchronized (Singleton.class) {
            if (uniqueInstance == null) {
              uniqueInstance = new Singleton();
            }
          }
        }
        return uniqueInstance;
      }
    }

    要点:

      1、单例模式确保程序中一个类最多只有一个实例

      2、单例模式也提供访问这个实例的全局点

      3、在Java中实现单例模式需要私有的构造器,一个静态方法和一个静态变量

      4、确定在性能和资源上的限制,然后小心地选择适当的方案来实现单例,以解决多线程的问题

      5、如果不是采用第五的Java2,双重检查加锁实现会失效

      6、小心,你如果使用多个类加载器,可能导致单例失效而产生多个实例

      7、如果使用JVM1.2或之前的版本,你必须建立单例注册表,以免垃圾收集器将单例回收

  • 相关阅读:
    世界各个地区WIFI 2.4G及5G信道划分表(附无线通信频率分配表)
    树莓派-基于raspivid实现拍视频
    在树莓派3b or 3a or 4a or 4b上搭建OpenWebRX
    树莓派4装热点板不启动咋板?
    portapack h1 买回来刷hackrf与使用说明
    portapack发射GPS的信号实现GPS脱机模拟器
    DMR windows 软件x64
    浅谈iOS多线程
    iOS Sonar 集成流程
    不要相信程序员在加班时间写的代码
  • 原文地址:https://www.cnblogs.com/stanljj/p/6985677.html
Copyright © 2011-2022 走看看