能有一个文件系统。

10. HttpApplication 也是单位例的典型应用。熟悉ASP.Net(IIS)的整个请求生命周期的人应该知道HttpApplication也是单例模式,所有的HttpModule都共享一个HttpApplication实例.

实现单利模式的原则和过程:

1.单例模式:确保一个类只有一个实例,自行实例化并向系统提供这个实例

2.单例模式分类:饿单例模式(类加载时实例化一个对象给自己的引用),懒单例模式(调用取得实例的方法如getInstance时才会实例化对象)(java中饿单例模式性能优于懒单例模式,c++中一般使用懒单例模式)

3.单例模式要素:

a.私有构造方法

b.私有静态引用指向自己实例

c.以自己实例为返回值的公有静态方法

1.饿汉式:单例实例在类装载时就构建,急切初始化。(预先加载法)

/**

* 饿汉式(推荐)

*

*/

public class Test {

private Test() {

}

public static Test instance = new Test();

public Test getInstance() {

return instance;

}

}

优点

1.线程安全

2.在类加载的同时已经创建好一个静态对象,调用时反应速度快

缺点

资源效率不高,可能getInstance()永远不会执行到,但执行该类的其他静态方法或者加载了该类(class.forName),那么这个实例仍然初始化

2.懒汉式:单例实例在第一次被使用时构建,延迟初始化。

class Test {

private Test() {

}

public static Test instance = null;

public static Test getInstance() {

if (instance == null) {

//多个线程判断instance都为null时,在执行new操作时多线程会出现重复情况

instance = new Singleton2();

}

return instance;

}

}

优点:

避免了饿汉式的那种在没有用到的情况下创建事例,资源利用率高,不执行getInstance()就不会被实例,可以执行该类的其他静态方法。

缺点:

懒汉式在单个线程中没有问题,但多个线程同事访问的时候就可能同事创建多个实例,而且这多个实例不是同一个对象,虽然后面创建的实例会覆盖先创建的实例,但是还是会存在拿到不同对象的情况。解决这个问题的办法就是加锁synchonized,第一次加载时不够快,多线程使用不必要的同步开销大。

3.双重检测

class Test {

private Test() {

}

public static Test instance = null;

public static Test getInstance() {

if (instance == null) {

synchronized (Test.class) {

if (instance == null) {

instance = new Test();

以下属于单例模式的优点的是_单例模式的优缺点和使用场景相关推荐

  1. 以下属于单例模式的优点的是_三、单例模式详解

    4.单例模式详解 4.1.课程目标 1.掌握单例模式的应用场景. 2.掌握IDEA环境下的多线程调试方式. 3.掌握保证线程安全的单例模式策略. 4.掌握反射暴力攻击单例解决方案及原理分析. 5.序列 ...

  2. 以下哪个选项不是单例模式的优点_深度解密Python单例模式

    相关代码已经上传至Github:Python_Development_Interview,大家可以收藏专题-Python的设计模式:解密+实战,之后会持续更新相关的设计模式. 1. 认识单例模式 认识 ...

  3. java_设计模式_单例模式_

    目录 引言 一.概述 1.概念: 2.单例模式有 3 个特点: 3.单例模式的优点和缺点: 单例模式的优点: 单例模式的缺点: 单例模式的应用场景: 单例模式的结构: 二.单例模式的实现 1.饿汉式单 ...

  4. python单例类命名_单例模式(java/python/c++)

    序 最近接触到新项目,后端基于java开发.对于有c++/python开发经验,无java经验的小梅同学,开始了漫漫学习之旅,第一篇学习记录,从最简单的单例模式开始吧. 众所周知,单例模式的最明显的几 ...

  5. java bean 单例模式_单例模式 - Beans_bag - 博客园

    1.单例模式的简介 定义 保证每个类仅有一个实例,并给外部提供一个访问它的全局访问点. 思路 如果一个类能够被创建多个实例,那么,这个类的构造方法肯定是公开的,外部通过此类的构造方法可以创建多个类的实 ...

  6. 静态内部类实现单例_单例模式详解

    概述 单例模式,是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例的特殊类.通过单例模式可以保证系统中,使用单例模式的类只有一个对象实例. 单例应用场景 Windows系统的任务管理器. ...

  7. java单例模式_Java描述设计模式(01):单例模式

    本文源码:GitHub·点这里 || GitEE·点这里 一.单例模式 1.概念图解 单例设计模式定义:确保这个类只有一个实例,并且自动的实例化向系统提供这个对象. 2.样例代码 package Si ...

  8. 单例模式的优缺点和使用场景

    单例模式的优缺点和使用场景 文章转自:http://www.tools138.com/create/article/20150929/020009847.html 单例模式的优缺点和使用场景 - 晓明 ...

  9. 以下哪个选项不是单例模式的优点_设计模式--单例

    概述 单例模式(SingletonPattern),保证一个类仅有一个实例,并提供一个访问它的全局访问点. 单例模式有 3 个特点: 单例类只有一个实例对象: 该单例对象必须由单例类自行创建: 单例类 ...

最新文章

  1. Linux下redis的安装(适用centos)
  2. 《编写有效用例》读书笔记1
  3. 习题8-5 使用函数实现字符串部分复制 (20 分)
  4. 原创 | IJCAI 2020灭霸式拒稿,AI审稿是否更公平?
  5. 9.9学python靠谱吗-9成以上老师都不会告诉你的,关于编程的秘密,看完以后恍然大悟...
  6. MySQL 为什么我的MySQL会“抖一下“?
  7. android如何添加gif,Android加载Gif和ImageView的通用解决方案:android-gif-drawable(1)...
  8. python 对象序列化 pickling_[Python]对dat文件的操作:序列化对象
  9. iPhone开发进阶(1) --- 深入理解iPhone OS/SDK与Objective-C 2.0
  10. redis session java获取attribute_面试题:给我说说你能想到几种分布式session实现?...
  11. IP 数据报首部分析
  12. nodejs轻量服务器后端
  13. python如何让图片镜像翻转_如何用 Python 增量备份 Roam Research 笔记图片?
  14. Python获取文件后缀名
  15. max函数|C++返回数组中的最大值——max_element函数
  16. 计算机网络(自顶向下方法)学习笔记
  17. Linux下破解UE
  18. 基于nrf52832 mpu6050应用实例(7)
  19. 【期刊推荐】JCR2区数学算法优化类重点SCI期刊征稿中~
  20. 音乐计算机在哪里买,[计算器自带音乐在哪里]语音计算器上的音乐有什

热门文章

  1. 一行代码指定python下载源为清华源【只需修改一次】
  2. markdown与latex:向量形式给字母加粗 \pmb{}
  3. golang 安装 guru vscode 安装失败
  4. jQuery_pager.js分页
  5. Laravel 5.x 启动过程分析 [转]
  6. 数据结构之线性表之顺序存储结构(3)
  7. poj 2318 TOYS
  8. Windows下配置Apache服务器
  9. Split的使用(C#)
  10. [转载] python 遍历字符串 字符_python 遍历字符串(含汉字)实例详解