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;
        }
    }
  • 相关阅读:
    django之分页
    linux后台运行和关闭、查看后台任务
    Django的模板系统
    Django的视图系统
    Django的配置文件(settings.py)
    Django的URL路由
    初始Django
    shell if判断总结
    一个抓取智联招聘数据并存入表格的python爬虫
    Python MySQLdb 查询中文出现问号的解决方法
  • 原文地址:https://www.cnblogs.com/hippiebaby/p/5468858.html
Copyright © 2011-2022 走看看