单例模式
来源:互联网 发布:电信宽带软件 编辑:程序博客网 时间:2024/05/21 15:39
什么是单例模式?
单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象,一个
最好的办法是,让类自身负责保存它的唯一实例。这个类可以保证没有其它实例可以被创建,并且它可以提供一个访问该实例的方法。
单例模式解决了什么问题?
1.全局访问:外界不能通过new来实例化该变量,但是我们又要提供一个方法使得外界可以得到该实例;
2.实例化控制:实例化仅由该类自己控制,而不需要调用这个类的那部分控制;
简单来说就是对唯一实例的受控访问。
饿汉模式
public class Singleton {private Singleton(){}private static final Singleton instance = new Singleton();public static Singleton getInstance(){return instance;}}
懒汉模式
public class Singleton {private Singleton(){}private static Singleton instance = null;public synchronized static Singleton getInstance(){if(instance == null)instance = new Singleton();return instance;}}
双重锁定(Double-Check Locking)
public class Singleton {private Singleton(){}private static Singleton instance = null;public static Singleton getInstance(){if(instance == null){synchronized (Singleton.class) {if(instance == null)instance = new Singleton();}}return instance;}}
当两个线程同时进入getInstance时,如果instance为null,那么由于锁机制,两个线程只有一个进入,另一个在外边排队等候,必须其中一个进入并出来后,另一个才能进入。
如果没有第二层的判断,那么最后就会创建两个实例。
- 单例、单例模式
- 单例模式-多线程单例模式
- 单件模式(单例模式)
- 设计模式------单例模式
- 设计模式------单例模式
- 设计模式-单例模式
- 设计模式 - 单例模式
- 设计模式---单例模式
- 设计模式---单例模式
- PHP模式-单例模式
- 【设计模式】单例模式
- 设计模式-单例模式
- 设计模式----单例模式
- 设计模式--单例模式
- 设计模式-单例模式
- 单例模式(单子模式)
- 设计模式-单例模式
- [设计模式] 单例模式
- LAMP配置相关
- android中textview使用 html
- linux (ubuntu) SVN命令大全
- 常用awk命令
- web视频播放空间 flowplayer-3.2.16
- 单例模式
- 特么的上传文件
- HUSTOJ 使用随笔
- 用url类获取指定url的页面内容
- Linux环境VNC服务安装、配置与使用(图)
- Sponsored post: MongoNYC: the NoSQL database event of the year
- 学习jms(一)——基本实例
- IT职场求生法则(1)- 通用法则
- jenkins从配置到使用(ubuntu 12.04)