设计模式---单例模式
来源:互联网 发布:淘宝店铺金额怎么提现 编辑:程序博客网 时间:2024/06/07 23:03
定义:作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。单例模式分成饿汉模式和懒汉模式。
饿汉模式代码如下:
懒汉模式代码如下:
饿汉模式与懒汉模式的区别:
饿汉式是典型的空间换时间,当类装载的时候就会创建类的实例,不管你用不用,先创建出来,然后每次调用的时候,就不需要再判断,节省了运行时间。线程安全
懒汉式是典型的时间换空间,就是每次获取实例都会进行判断,看是否需要创建实例,浪费判断的时间。当然,如果一直没有人使用的话,那就不会创建实例,则节约内存空间。线程不安全
怎么实现线程安全的懒汉模式呢?
1.使用synchronized
2.双重检查加锁
所谓“双重检查加锁”机制,指的是:并不是每次进入getInstance方法都需要同步,而是先不同步,进入方法后,先检查实例是否存在,如果不存在才进行下面的同步块,这是第一重检查,进入同步块过后,再次检查实例是否存在,如果不存在,就在同步的情况下创建一个实例,这是第二重检查。这样一来,就只需要同步一次了,从而减少了多次在同步情况下进行判断所浪费的时间。如下:
“双重检查加锁”机制的实现会使用关键字volatile,它的意思是:被volatile修饰的变量的值,将不会被本地线程缓存,所有对该变量的读写都是直接操作共享内存,从而确保多个线程能正确的处理该变量。
阅读全文
0 0
- 设计模式------单例模式
- 设计模式------单例模式
- 设计模式-单例模式
- 设计模式 - 单例模式
- 设计模式---单例模式
- 设计模式---单例模式
- 【设计模式】单例模式
- 设计模式-单例模式
- 设计模式----单例模式
- 设计模式--单例模式
- 设计模式-单例模式
- 设计模式-单例模式
- [设计模式] 单例模式
- 设计模式--单例模式
- 设计模式---单例模式
- 设计模式--单例模式
- 设计模式 -----单例模式
- 设计模式:单例模式
- umask详解
- Lua与游戏的不解之缘
- idea免费激活
- 设计模式二:观察者模式
- Linux下用C语言判断程序是否已运行
- 设计模式---单例模式
- 学习笔记之图片旋转
- OpenGL 着色器基础
- C++复习(4):有关const的一系列问题
- the second project , total thinking
- ubuntu中的vi编辑器的一些简单操作
- 78. Subsets
- 文件系统 (NFS)
- hibernate 三种状态