设计模式之单例设计模式

饿汉式

在静态代码块中直接加载进jvm;
缺点:一开始就会被加载进来。

懒汉式

在初始化时判断是否已经被初始化
缺陷:若多线程初始化则会被重复初始化

双重判断加同步锁

在INSTANCE上加voliate 防止代码重排序
避免在未初始化时就被引用

在同步代码块时加synchronized,保证一个线程可以获得锁并进行初始化;

静态内部类单例

避免使用了同步锁,通过jvm内部的机制保证了线程安全(类加载只能一次)

枚举单例

最完美的单例
可以防止反序列化
为什么可以防止反序列化?因为反序列化依赖于类的构造函数,而枚举单例不存在构造函数

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容