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

  • 相关阅读:
    [导入]如何使用C#调用非托管DLL函数
    [导入]ASP.NET 2.0 Page的执行顺序
    [导入]C#实现捕获当前屏幕截图(转)
    初学者入门经典:Java环境配置大全
    [导入]使用母版页时内容页如何使用css和javascript(转)
    CruiseControl.NET配置总结
    使用SQL语句清空数据库所有表的数据
    运行时修改config文件
    [导入]Repater 控件的应用(学习)
    [导入]PictureBox 读取图片及绘画
  • 原文地址:https://www.cnblogs.com/stanljj/p/6985677.html
Copyright © 2011-2022 走看看