![](https://img.haomeiwen.com/i29526965/fc5aa9cbd684c8f9.png)
定义:在运行时数据区里面,指定类A的实列对象有且只能有一个
提示:饿汉式和懒汉式的区分标准:目标类A要设计为单列,类A加载的时候实列对象就创建了,饿汉式,需要类A进行相应的方法调用才才创建对象,懒汉式
饿汉式:类加载时创建实列对象
静态代码块写法
组合静态成员变量写法
优点:通过类加载过程规避并发问题
缺点:类加载和类的对象使用并不是绑定在一起的,类加载的时候初始化实列对象,后续如果用不上,本质就是出现了内存内存泄漏问题
懒汉式:实列获取方法调用时才有机会触发对象的创建过程
线程安全的写法但推荐使用的写法
![](https://img.haomeiwen.com/i29526965/3fb78cd20ba35365.png)
![](https://img.haomeiwen.com/i29526965/af0b6557388ff655.png)
静态内部类写法代码特征:
1.单列目标类A构造方法私有化
2.类A内嵌一个类B,B静态组合类A
3.类A提供方法,这个方法直接访问类B静态组合的成员变量A的实列对象
类A加载时单列对象未实列化,类A方法调用时触发内部类B加载,B加载规避并发问题并初始化实列对象
![](https://img.haomeiwen.com/i29526965/122c972b03fe4298.png)
线程安全但不推荐使用的写法
![](https://img.haomeiwen.com/i29526965/6c17ae66c6d6a514.png)
![](https://img.haomeiwen.com/i29526965/a0bd85c888191e3d.png)
非线程安全的写法只能单线程下使用
暴力判断对象是否创建过,没有创建的话创建并返回,不做任何并发处理
网友评论