单例模式的三种实现
来源:互联网 发布:saas软件服务协议 编辑:程序博客网 时间:2024/06/04 21:11
- 一 饿汉式
- 二 懒汉式
- 三 登记式
一 、饿汉式
class Singleton { private static final Singleton instance = new Singleton(); private Singleton() {} public static Singleton getInstance() { return instance; }}
缺点:类每次使用时都会初始化静态成员变量(调用该类的其它方法时也会初始化),浪费内存。
二 、懒汉式
class Singleton { private static Singleton instance; private Singleton() {} public static Singleton getInstance() { if (instance == null) { synchronized (Singleton.class) { if (instance == null) { instance = new Singleton(); } } } return instance; }}
缺点:
会有线程安全问题,加上同步代码块解决线程安全问题但效率低,加上双重检锁提高访问效率。
没有第一次检锁时,无论单例成员变量有没有被初始化线程都会等待。
加上第一次检索,当单例成员变量被初始化后无需等待直接返回对象引用。
三 、登记式
class Singleton { private Singleton() {} private static class Holder{ private static final Singleton instance = new Singleton(); } public static Singleton getInstance() { return Holder.instance; }}
优点:内部类只有在被外部类调用时才会加载,延缓加载时间。
阅读全文
0 0
- 单例模式的三种实现
- 单例模式的三种实现
- 单例模式的三种实现
- 单例模式的三种实现方式:singleton
- java基础知识回顾---单例模式的三种实现
- Java单例模式的三种实现方式
- 单例模式的三种常用实现
- 单例模式的三种实现-Java
- 单例模式的三种实现及区别
- 单例模式的三种实现方法
- 单例模式的三种模式
- 设计模式之单例模式三种实现
- 设计模式之单例模式的三种c++的优化实现
- 单例模式的三种形式
- 单例模式的三种写法
- 单例的三种模式
- 单例模式的三种写法
- 单例模式的三种方法
- nginx和dubbo微服务架构图
- 学习笔记TF067:TensorFlow Serving、Flod、计算加速,机器学习评测体系,公开数据集
- LDA通俗解释
- 基本排序算法-java实现
- 2017 年你应该学习的编程语言、框架和工具
- 单例模式的三种实现
- 线程池-简单使用及原理,以及自定义线程池
- CSS中的三种样式来源:创作人员、读者和用户代理(转载)
- TinyLinux学习1-VMware安装到磁盘
- bigdata-11
- 出现Internal Server Error错误
- VISIO中如何增加连接点
- 菜鸟学习历程【6】关键字、指针
- bigdata-12