精通23种设计模式——单例模式
来源:互联网 发布:优化排名软件 编辑:程序博客网 时间:2024/06/06 02:00
单例模式
简单的说,把类的构造函数私有化,就是单例模式。
public void Singleton{ private static final Singleton singleton = new Singleton(); private Singleton(){ } public Singleton getInstance(){ return singleton; }}
这是一种被称为饿汉式的单例模式,这种方式并不需要考虑多线程的问题。
还有一种创建单例模式的写法,就要小心多线程的问题了。
public void Singleton{ private static final Singleton singleton = null; private Singleton(){ } public Singleton getInstance(){ if(singleton == null) singleton = new Singleton(); return singleton; }}
这种写法被称为懒汉式(不要问我为什么叫懒汉式、饿汉式!)
这种写法要注意多线程的问题了,如果线程A在执行完singleton == null的判断时,还未来及创建singleton,此时CPU控制权被线程B获取,线程B成功创建singleton后,释放了控制权,线程A重新获得控制权,那么此时线程A会继续执行并创建singleton。此时内存中会存在两个singleton的实例。
那么单例模式有啥用处呢?
如果在系统中,需要频繁的创建和销毁对象,会对系统资源造成极大的浪费。那么此时,就可以使用单例模式,创建一个实例对象,使它长期驻存在内存中。
0 0
- 精通23种设计模式——单例模式
- 精通23种设计模式——代理模式
- 精通23种设计模式——工厂方法模式
- 精通23种设计模式——观察者模式
- 精通23种设计模式——责任链模式
- 23种设计模式——1单例模式
- 23种设计模式——单例模式
- 23种设计模式之——单例模式
- 23种设计模式之——单例模式
- 【23种设计模式——单例模式】
- 23种设计模式——单例模式
- 23种设计模式—单例模式
- 设计模式—单例设计模式
- 设计模式之禅—23种设计模式详解_1 单例模式
- 23种设计模式-单例模式
- 23种设计模式~单例模式
- 23种设计模式-单例模式
- 23种设计模式-----单例模式
- uboot下init_sequence_f函数之reserve_mmu
- 数据结构系列之链表——双链表建立
- System类
- Better Web Type
- 仿QQ6.1手势锁
- 精通23种设计模式——单例模式
- 单链表和双向循环链表的创建、初始化、以插入(二)
- Git 常用命令
- Zookeeper
- StringBuffer/StringBuilder类
- StringBuffer和StringBuilder源码解析(三)-- indexOf()方法
- uboot下init_sequence_f函数之reserve_video
- 关于利用注解,自动装配搭建s2sm框架的整合
- 数据结构系列之链表——双链表删除