设计模式之单例模式
来源:互联网 发布:论坛源码下载 编辑:程序博客网 时间:2024/06/02 01:22
单例的作用是保证整个application的生命周期中,在任意一个时刻只存在一个,分为两种模式:
1.饿汉模式 在类加载的时候对象就已经存在
public class Singleton { private static Singleton singleton = new Singleton(); public Singleton(){} public Singleton getINstance(){ return singleton; }}
2.懒汉模式 类加载的时候对象还不存在,所谓的延迟加载,模式
public class Singleton { private Singleton singleton = null; public Singleton(){} public Singleton getINstance(){ if(singleton==null){ singleton = new Singleton(); } return singleton; }}
ok 到这了说一个问题,单看上面两个单例的实现模式,饿汉模式是一种线程安全的模式,因为在类的创建过程中已经创建了一个静态的instance供使用,而懒汉模式则反之,再多线程环境下会遇到线程同步的问题,所谓线程同步就是因为现代计算机的发展,cpu速度要远远快于主存,所以在每个cpu都会带一个高速缓存,每个线程在修改数据的时候首先会将数据从主存读到高速缓存,修改完了之后再写回主存,这个过程中会存在数据不同步的问题,这地方就会有一个数据同步的修饰符volatile ,主要是将线程操作完成之后数据立刻写回主存,当然还有就是原子性操作的问题,除long 和double以外的的基本类型的赋值都是原子性操作,+1 不是原子性操作,说的有点多其实是要说单例的双重检查锁的问题了,ok代码
public class Singleton { private volatile Singleton instance = null; public Singleton() { } public Singleton getInstance(){ if(instance==null){ synchronized (Singleton.class) { if(instance==null){ instance = new Singleton(); } } } return instance; }}
阅读全文
0 0
- 设计模式之 单例设计模式
- 设计模式之 单例设计模式
- 设计模式之单例设计模式
- 设计模式之-----------单例设计模式
- 设计模式之:单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之-单例设计模式
- 设计模式之单例设计模式 标签: 设计模式
- 设计模式之单例
- 设计模式之单例
- 设计模式之 单例
- 2017考研复试选导师,最该权衡的7个方面
- My_learningSummary
- setDisplayHomeAsUpEnabled
- ELK 日志分析系统(五)
- 2017 个推面试题
- 设计模式之单例模式
- Python+ImageMagick实现多图片合并为一个pdf文件
- Maven之——插件目标及绑定、命令行调用插件、目标前缀(插件前缀解析策略)、插件解析运行机制
- 判断素数
- 2017考研复试,绕开让你失败的致命错误
- 软件工程复习资料(三)
- Java死锁检测
- Android----内容提供者
- 安卓图片按钮点击切换