单例模式
来源:互联网 发布:网络电影心机主播 编辑:程序博客网 时间:2024/06/06 03:41
黑马程序员
单例设计模式
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IO开发S</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
单例设计模式分为饿汉式和懒汉式。主要用于解决对象的唯一性的问题。
饿汉式:
基本思想:
① 私有构造方法
② 本类中创建自己的对象
③ 提供一个静态方法,返回本类对象的引用
具体代码如下:
class Single
{
private Single(){}
private static Single s = new Single();
public static Single getInstance()
{
return s;
}
}
相对而言,懒汉式要麻烦许多。要考虑到线程的安全问题。而传说中的面试,貌似偏偏就喜欢复杂的。
懒汉式:
基本思想:
① 私有构造方法
② 创建引用型变量,但是,不创建对象
③ 提供公共的静态的方法,先要判断对象是否为空。但是,这里就涉及到一个线程安全问题。假如线程A判断完对象为空。它本应该创建对象,然而就在此时,CPU去执行其他的任务。线程A就停在这里。当线程B来执行这里的时候,它也要判断一下,假如同样的事情又发生了。就会有两个线程卡在哪里。当CPU再一次回来执行线程A的时候,它已经判断完了,程序往下执行,创建对象。然后,线程B回来继续执行的时候,因为它也已经判断过了。那么它也创建一个对象。于是,问题也就出现了,这样便不能保证对象的唯一性。那么,我们就必须在判断完后再加上一把锁。每一次程序进去的时候先判断,再进去拿到对象锁,再创建。哪没有拿到锁的线程,它就不能进去执行。更不能创建对象。
具体代码如下:
class Single
{
private static Single s = null;
private Single(){}
public static Single getInstance()
{
if(s==null) {
synchronized(Single.class) {
if(s==null) {
s = new Single();
}
}
}
return s;
}
}
相对而言,饿汉式的安全性和运行效率较高,而懒汉式的相对较低。
以上就是我理解的单例模式了。看见他们应用的比较多,所以分享一下。
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
详细请查看:<ahref="http://edu.csdn.net" target="blank">http://edu.csdn.net</a>
- 单例、单例模式
- 单例模式-多线程单例模式
- 单件模式(单例模式)
- 设计模式------单例模式
- 设计模式------单例模式
- 设计模式-单例模式
- 设计模式 - 单例模式
- 设计模式---单例模式
- 设计模式---单例模式
- PHP模式-单例模式
- 【设计模式】单例模式
- 设计模式-单例模式
- 设计模式----单例模式
- 设计模式--单例模式
- 设计模式-单例模式
- 单例模式(单子模式)
- 设计模式-单例模式
- [设计模式] 单例模式
- 帧内预测——initAdiPattern
- SQL查询操作
- Citrix 服务器虚拟化之八 Xenserver虚拟机模版
- 感悟--黄小琥的二十年的坚持
- hdu 1241 Oil Deposits (dfs)
- 单例模式
- maven-war-plugin
- SOJ 4299: component
- hdu 1856
- 收集的一些cocos2d-x资料-博客,源码,网站,论坛等等
- 机器学习理论与实战(九)回归树和模型树
- IoC/DIP其实是一种管理思想[转载]
- 根据两点经纬度计算距离
- XML 特殊字符处理