单例模式小结!
来源:互联网 发布:centos sftp配置 编辑:程序博客网 时间:2024/05/29 14:10
简单说来,单例模式(也叫单件模式)的作用就是保证在整个应用程序的生命周期中,
任何一个时刻,单例类的实例都只存在一个(当然也可以不存在)。
具体实现就是把单例类的构造方法访问权限设置成private,然后在单例类里面定义GetInstance()方法来访问构造方法
GetInstance()通过如下方式保证该 Singleton 只存在一个实例:
首先这个 Singleton 类会在在第一次调用 GetInstance()时创建一个实例,并将这个实例的引用封装在自身类中,
然后以后调用 GetInstance()时就会判断这个 Singleton 是否存在一个实例了,如果存在,则不会再创建实例。
而是调用以前生成的类的实例,这样下来,整个应用程序中便就只存在一个实例了。
public class Singleton
{
private static Singleton singleton=null;
private Singleton()
{
}
public static Singleton GetInstance()
{
if (singleton == null)
{
singleton = new Singleton();
}
return singleton;
}
}
,假如现在有两个线程A和线程B,线程A执行到 this.singletonPattern = new SingletonPattern(),正在申请内存分配,可能需要0.001微秒,就在这0.001微秒之内,线程B执行到if(this.singletonPattern == null),你说这个时候这个判断条件是true还是false?是true,那然后呢?线程B也往下走,于是乎就在内存中就有两个SingletonPattern的实例了,看看是不是出问题了?
如果你这个单例是去拿一个序列号或者创建一个信号资源的时候,会怎么样?业务逻辑混乱!数据一致性校验失败!最重要的是你从代码上还看不出什么问题,这才是最要命的!因为这种情况基本上你是重现不了的,不寒而栗吧,那怎么修改?有很多种方案,我就说一种,能简单的、彻底解决问题的方案:
定义私有变量: private static Singleton singleton=new SingleTon();
- 单例模式小结!
- 单例模式小结
- java 单例模式小结
- 单例设计模式小结
- java单例模式的一个小结
- 单例模式(Singleton Pattern)小结
- 单例模式的简单小结 C++
- load,initialize和单例模式小结
- JDBC小结 单例模式 静态代码块
- 单例模式和双重检测的小结
- 项目小结和单例模式下的toast
- java设计模式之单例模式5种方法及优缺点小结
- 《设计模式之禅》学习小结之单例模式,工厂方法模式和抽象工厂模式
- 黑马程序员——java小结_007_单例设计模式(懒汉式、饿汉式)
- 日常小结-多线程的单例模式的三种实现方式
- 单例、单例模式
- 单例模式-多线程单例模式
- 单件模式(单例模式)
- Android中自定义checkbox样式
- VB.NET rdlc 报表的使用
- js 下 map 的实现
- 多个域名指到一个网站,用301跳转方式对SEO更有利
- Firefox浏览器 使用攻略
- 单例模式小结!
- ubuntu 访问windows 的共享文件夹
- Remote debug Tomcat from Eclipse
- DSHOW 中关于FILTER的连接内部实现过程
- EBS实战手册 – 开发环境构筑
- MySQL超级用户(root)密码忘记重置,附N多解决方法!
- 高效设计测试用例
- linux下使用epoll接收Udp数据
- Linux - one command per day--chgrp