单例模式

单列模式

一、静态引用变量直接实力例化对象

随着类装载就完成实例化

微信图片_20230419145511

二、使用代码块,和一一样

微信图片_20230419145437

三、懒汉式加载

前两个是类装载就完成实例化,不是当需要调用的时候才实例化

微信图片_20230419145500

四、三的改进,加锁避免线程安全的问题,但是耗时,不高效

微信图片_20230419145457

五、用静态代码块缩小锁的范围,但是还是会出现线程的问题

微信图片_20230419145519

六、双重检查解决线程安全问题(volatie是用来解决JTI的指令重排问题,防止在没有初始化之前就返回instance)

微信图片_20230419145515

七、用的最多的内部类的方式

外部类加载一次,内部类也只加载一次,实例化也只进行一次。而且外部类加载时是不加载内部类的,只有在调用这个内部类的时候才会加载。

微信图片_20230419145504

八、effective java中提出的枚举写法是最好的单列模式

前面的单列模式都不能解决序列化问题,这个可以防止反序列化问题

微信图片_20230419145507

posted @ 2023-05-13 20:20  Bepowerful  阅读(24)  评论(0)    收藏  举报