单例模式
来源:互联网 发布:pubmed数据库电脑官网 编辑:程序博客网 时间:2024/06/16 09:49
单例模式应该是设计模式中应用最多的一种设计模式。其看似简单,但是要真正写一个好的单例模式又没那么简单。
最常见的单例模式应该是饿汉式和懒汉式。
//饿汉式class Single { private static final Single s = new Single(); private Single() {} public static Single getInstance(){ return s; }}
//懒汉式class Single { private static Single s = null; private Single() {} public static Single getInstance(){ if(s == null){ //安全问题 s = new Single(); } return s; }}
懒汉式最大的问题就是非线程安全。当有多个线程访问时,如果线程A和线程B先后判断s==null,然后线程A创建Single的一个实例,之后线程B再次创建一个Single的实例,就会导致创建两个Single的实例,变成非单例的。
class Single { private static Single s = null; private Single() {} public static synchronized Single getInstance(){ //每次都判断锁,比较低效 if(s == null){ s = new Single(); } return s; }}
此程序每次都要判断锁,效率比较低。
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; }}
此程序减少了判断锁的次数,效率比上个高。
0 0
- 单例、单例模式
- 单例模式-多线程单例模式
- 单件模式(单例模式)
- 设计模式------单例模式
- 设计模式------单例模式
- 设计模式-单例模式
- 设计模式 - 单例模式
- 设计模式---单例模式
- 设计模式---单例模式
- PHP模式-单例模式
- 【设计模式】单例模式
- 设计模式-单例模式
- 设计模式----单例模式
- 设计模式--单例模式
- 设计模式-单例模式
- 单例模式(单子模式)
- 设计模式-单例模式
- [设计模式] 单例模式
- 最简单的小型商城实现:Serlvet+Jsp经典案例
- VC实现文件自我删除
- 习题3-17
- 如何远程控制另一台计算机并传送文件
- 黑马程序员—Properties—限制与记录程序运行次数
- 单例模式
- MySQL窗口输入密码后消失,解决办法
- vistual studio 2012 在本地安装 msdn2013
- Apple Watch开发(二)--Xcode创建项目及其结构
- uva 512
- Hive启动报错解决方法
- 堆和栈的区别(转过无数次的文章)
- 大小端问题
- 远程桌面使用分三步: