单例模式
独一无二的对象
一、经典的单例模式
1、 定义
确保一个类只有一个实例,并提供一个全局访问点。
2、 类图
3、 实现
4、 一些说明
<1>由类自己负责创建和保存它的唯一实例
<2>常被用来管理共享的资源,如数据库连接或线程池等
5、 多线程出问题啦!!!
二、懒汉与饿汉
1、懒汉
第一次用到时才去实例化。一般用于访问量大或访问线程多时。
2、饿汉
在类定义时就去实例化。一般用于访问量小或线程少时。
三、懒汉式(线程安全---加锁)
注:如果没有第二个NULL判断,那么两个线程通过第一个NULL判断,lock机制,A线程进入,B线程等待,A线程创建实例出来后,B线程进入还可以创建实例。
四、饿汉式(本身就是线程安全的)