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

    饿汉模式

    public class Singleton {  
        private static Singleton instance = new Singleton();  
        private Singleton (){}  
        public static Singleton getInstance() {  
          return instance;  
        }  
    }  

    另类饿汉单例模式(静态代码块)

    public class Singleton {  
        private Singleton instance = null;  
        static {  
          instance = new Singleton();  
        }  
        private Singleton (){}  
        public static Singleton getInstance() {  
          return this.instance;  
        }  
    }   

    懒汉模式 (懒汉,线程安全)

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

    懒汉模式 (懒汉,线程安全)--双检锁模式

    public class Singleton {  
        private volatile static Singleton singleton;  
        private Singleton (){}  
        public static Singleton getSingleton() {  
          if (singleton == null) {  
              synchronized (Singleton.class) {  
                if (singleton == null) {  
                    singleton = new Singleton();  
                }  
              }  
          }  
          return singleton;  
        }  
    }  

     静态内部类 

    public class Singleton {  
        private static class SingletonHolder {  
          private static final Singleton INSTANCE = new Singleton();  
        }  
        private Singleton (){}  
        public static final Singleton getInstance() {  
          return SingletonHolder.INSTANCE;  
        }  
    }  
  • 相关阅读:
    Sql Server 2008学习之第二天
    Sql Server 2008学习之第一天
    Codeforce 1175 D. Array Splitting
    CF1105C Ayoub and Lost Array ——动态规划
    数据结构——并查集
    动态规划——01背包问题
    常用技巧——离散化
    动态规划——稀疏表求解RMQ问题
    基础算法—快速幂详解
    欧拉函数及其扩展 小结
  • 原文地址:https://www.cnblogs.com/slowcity/p/7505596.html
Copyright © 2011-2022 走看看