java 单例模式小结
来源:互联网 发布:房屋平面图设计软件 编辑:程序博客网 时间:2024/09/21 09:29
package A;/** * 懒汉模式:相比较于饥饿模式,该种模式不存在提前初始化问题,大大减小了内存的使用。 * 但是该种模式还存另一种危险--这种写法线程不安全。 * 解决办法见singlethree * @author Administrator * */public final class Single {private static Single single = null;private Single(){}public static Single getSingleInstance(){if(null==single) single=new Single();return single;}}
package A;/** * 饥饿模式:存在问题就是在没有使用前就已经初始化对象呢了,很占据内存,存在潜在的危险!! * @author Administrator * */public final class SingleTwo {private static SingleTwo singletwo=new SingleTwo();private SingleTwo(){}public static SingleTwo getsingleinstance(){return singletwo;}}
package A;/** * 同步的单例模式:该办法解决了线程安全问题。 * 但是问题又来了,这种办法大大降低了并发性。 * 继续看SingleFour * @author Administrator * */public final class SingleThree {private static SingleThree singlethree = null;private SingleThree(){}public static synchronized SingleThree getsingleinstance(){if(singlethree==null){singlethree= new SingleThree();}return singlethree;}}
package A;/** * 双重检查锁的单例模式:该模式,既解决了线程的安全问题,也解决了并发的问题。 * 但是存在新的问题。当第一个对象正在被创建的时候,另一个线程也刚好进行判断对象是不是为空。因为穿件、、创建对象是需要时间的,这个时候这个对象的地址其实已经存在了, * 另一个线程直接取到了初始化一般的对象。。。。。。这明显不合理。 * 那有没有更好的办法呢。请看SingleFive * @author Administrator * */public final class SingleFour {private static SingleFour singlefour = null;private SingleFour(){}public static SingleFour getsingleinstance(){if(singlefour==null){synchronized (SingleFour.class) { if(null == singlefour) singlefour = new SingleFour();}}return singlefour;}}
package A;/** * 该种模式解决了以上各种问题。 * @author Administrator * */public final class SingleFive {private static class single{public final static SingleFive singlefive= new SingleFive();} public static SingleFive getsingleinstance(){return single.singlefive;}}
0 0
- java 单例模式小结
- java单例模式的一个小结
- 单例模式小结!
- 单例模式小结
- 单例设计模式小结
- java设计模式之单例模式5种方法及优缺点小结
- 单例模式(Singleton Pattern)小结
- 单例模式的简单小结 C++
- load,initialize和单例模式小结
- java单例模式
- Java单例模式
- java单例模式
- java单例模式
- Java单例模式
- Java单例模式
- java单例模式
- Java单例模式
- java 单例模式
- Objective-C非正式协议与正式协议
- cocos2d-x游戏开发 跑酷(三) 人物跑动
- sql中truncate和delete的区别
- cocos2d-x游戏开发 跑酷(四) 关联物理世界
- fastjson 第三方jar和java各种数据对象相互转化
- java 单例模式小结
- 工作中遇到的问题-服务器篇
- linux命令 - 更改主机名
- win7/8下VirtualBox虚拟Ubuntu共享文件夹设置
- cocos2d-x游戏开发 跑酷(五) 跳起和下蹲动作 手势识别
- 红外摄像机夜视监控系统的四项问题
- ngix文件解析漏洞
- css盒模型
- cocos2d-x游戏开发 跑酷(六) 地图循环