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

    意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

    实现(单线程):

    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 static Singleton uniqueInstance;
    
        private Singleton() {}
    
        public static synchronized Singleton getInstance() { // 同步方法
            if (uniqueInstance == null)
                uniqueInstance = new Singleton();
            return uniqueInstance;
        }
    }
    

    实现(多线程改良 1):

    public class Singleton {
        private static final Singleton uniqueInstance = new Singleton(); // 静态初始化时便创建
    
        private Singleton();
    
        public static Singleton getInstance() {
            return uniqueInstance;
        }
    }
    

    实现(多线程改良 2):

    public class Singleton {
        private static volatile Singleton uniqueInstance;  // 声明为volatile域,保证其可见性
    
        private Singleton() {}
    
        public static Singleton getInstance() {
            if (uniqueInstance == null) {
                synchronized (Singleton.class) {  // 同步块
                    uniqueInstance = new Singleton();
                }
            }
            return uniqueInstance;
        }
    }
  • 相关阅读:
    vue-cli项目打包出现空白页和路径错误问题
    Git操作手册
    Atom Editor 插件 atom-less 的使用方法
    Vue搭建
    使绝对定位高宽自适应
    原生JS表单序列化
    前端代码有关搜索引擎的代码
    网页局部打印
    万维网
    浅淡传统企业进入移动互联网的几种方式
  • 原文地址:https://www.cnblogs.com/hippiebaby/p/5468858.html
Copyright © 2011-2022 走看看