1.单例模式
特点:只存在一个对象实例(模板对象)。
一、饿汉式
1.类的构造器私有化(防止别人new创建)
2.只有类的内部创建对象
3.向外部提供一个公共方法getInstance(),返回对象实例。
优点:立即加载实例化,没有线程同步的问题。
缺点:没有懒加载的效果,浪费内存。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/83ab5c6adbd5ecabe9a8d0cb2d216ac2.png)
二、懒汉式
1.线程不安全
提供一个静态公共方法getInstance(),调用这个方法才创建对象。
缺点:多个线程调用时,会产生多个实例。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e15731d8837b1301d619f470f5efe0fc.png)
2.线程安全
方法加个同步锁,虽然效率低,但是安全,一般不建议用。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/63240e043074c473e44de68075c30a6c.png)
3.双重检查
第一个线程进来,判空,创建完对象,另外一个线程进来,发现已经创建好了。