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

  • 相关阅读:
    519,伪类和伪元素的区别
    518,自定义字体的使用场景
    517,sytlus/sass/less的区别
    516,base64的原理及优缺点
    515,前端性能优化--减少http请求(待补充)
    514 ,css不同选择器的权重(css层叠的规则)
    513,如果需要手写动画,你认为最小时间间隔是多久,为什么?
    512,a标签的target属性
    511,display:inline-block什么时候不会显示间隙?
    510,position的值,relative和absolute定位原点是
  • 原文地址:https://www.cnblogs.com/stanljj/p/6985677.html
Copyright © 2011-2022 走看看