单例模式意义

  1. ![image.png](https://cdn.nlark.com/yuque/0/2019/png/153990/1561864131427-edfdce07-7a30-430c-bc09-96f635cd61bc.png "image.png")

类图

类自己创建实例,类外无法创建对象
image.png

代码示例

image.png

1.单例类

image.png

2.巧克力工厂使用单例

image.png

image.png

代码优化

多线程不安全

同步锁

synchronized保证只能一个线程使用这个方法,但同步锁耗资源,调用次数少可以使用
image.png

饿汉模式

类加载就实例化对象,但是浪费内存资源
image.png

双重检查加锁

关键字 volatile
image.png

同步代码块,加锁
同步区域不会消耗资源,多次调用也不会第二次进入同步代码块
image.png