• 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或之前的版本,你必须建立单例注册表,以免垃圾收集器将单例回收

  • 相关阅读:
    ROSS仿真系统简单教程
    python小练习1.1
    c语言文件I/O 文件读取和写入
    Python 学习笔记 多线程-threading
    parsec(The parsec benchmark suit )使用教程
    Checkpoint/Restore In Userspace(CRIU)使用细节
    Checkpoint/Restore in Userspace(CRIU)安装和使用
    考研总结
    北理计算机复试经验
    PAT(A) 1075. PAT Judge (25)
  • 原文地址:https://www.cnblogs.com/stanljj/p/6985677.html
Copyright © 2020-2023  润新知