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;
        }
    }
  • 相关阅读:
    企业面试题库1
    就业模拟试题_Net
    就业模拟试题_Java
    oracle创建用户
    Activity基础类
    Activity容器控件
    面试题_Java
    Activity功能控件
    获取工作流活动的返回值
    企业面试题库_数据库部分
  • 原文地址:https://www.cnblogs.com/hippiebaby/p/5468858.html
Copyright © 2011-2022 走看看