《Head First Design Patterns》读书笔记之单例模式
来源:互联网 发布:京瓷网络扫描设置 编辑:程序博客网 时间:2024/05/01 14:45
/** * @author dean * 最初的单例模式设计,注意两个static */public class SingleTest {private static SingleTest singleton;private SingleTest(){}public static SingleTest getInstance(){if(singleton == null)singleton = new SingleTest();return singleton;}}
/** * @author dean * 在多线程并发的情况下,还是有可能造成单例对象被多次new出来(仅仅在第一次getInstance()的时候可能发生) * * synchronized 同步一下 getInstance()吧 */public class SingleTest2 {private static SingleTest2 singleton;private SingleTest2(){}public synchronized static SingleTest2 getInstance(){if(singleton == null)singleton = new SingleTest2();return singleton;}}
/** * @author dean * * 如果不考虑性能的话SingleTest2的做法已经可以了 * 因为synchronized需要一些检测,会耗费一点时间,而且按SingleTest2的写法,每次getInstance的时候都需要检测 * 很耗性能,改进一下,利用volatile和synchronized同步块 */public class SingleTest3 {/** * volatile 保证多线程并发的情况下,对同一个变量使用的是同一块内存 */private volatile static SingleTest3 singleton;private SingleTest3(){}public static SingleTest3 getInstance(){if(singleton == null)// 这里只是在第一次执行的时候会检测一下,之后就不会再进行synchronized检测了synchronized(SingleTest3.class){singleton = new SingleTest3();}return singleton;}}
0 0
- 《Head First Design Patterns》读书笔记之单例模式
- 《Head First Design Patterns》读书笔记之策略模式
- 《Head First Design Patterns》读书笔记之观察者模式
- 《Head First Design Patterns》读书笔记之命令模式
- 《Head First Design Patterns》读书笔记之适配器模式
- 《Head First Design Patterns》读书笔记之模板模式
- 《Head First Design Patterns》读书笔记之迭代器模式
- 《Head First Design Patterns》读书笔记之状态模式
- 单例模式——Head First Design Patterns
- Head First design patterns读书笔记
- Head First Design Patterns
- Head First Design Patterns
- Head First Design Patterns
- Head First Design Patterns
- Head First Design Patterns
- Head First Design Patterns
- Head First Design Patterns读书笔记及C++版代码(一):观察者(Observer)模式
- 《Head First Design Patterns》笔记五:单件模式(Singleton Pattern)
- 风の住む街 矶村由纪子
- PyQt挖地雷游戏学习笔记(6)
- 点退出弹出确认退出
- Accelerated C++ 学习笔记及题解----第三章
- 畅谈程序员接私活
- 《Head First Design Patterns》读书笔记之单例模式
- 开辟一个二维数组,有10*8个元素,用随机数填充,按照下面的方法用函数实现查找一个数是否存在
- Map集合类中保证线程安全的策略比较
- SVM 为什么说高斯核函数能把向量映射到无穷维
- 主要内容
- Substring with Concatenation of All Words[leetcode]
- Qt5.3 OpenCV 环境搭建(编译OpenCV)
- javascript用户代理检测
- 一段有意思的java代码