# 单例模式 **Repository Path**: gitLDR_admin/singleton_mode ## Basic Information - **Project Name**: 单例模式 - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-03-14 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 单例模式 #### 思考破坏单例模式的方式有哪些?并且归纳总结。 - 反射暴力攻击单例 - 序列化破坏单例 - 多线程 #### 总结每种单例写法的优、缺点。 - 饿汉式单例: - 优点: - 没有任何锁,执行效率比较高。 - 用户体验比懒汉式更好 - 缺点 - 类加载的时候就初始化,不管是否有用到,都占用内存。 - 懒汉式单例 - 优点: - 需要的时候才进行加载,大大节省内存空间 - 缺点: - 线程不安全 - 执行效率比饿汉式低 - 注册式单例 - 优点: - 方便管理对象,其实也属于懒加载 - 缺点: - 线程不安全 - 枚举单例 - 优点: - 利用JDK底层可以解决反射和序列化破坏问题 - 缺点: - 造成资源浪费的,内存占用问题。 - ThreadLocal单例 - 优点: - 保证线程内部的全局唯一,且天生线程安全 #### 梳理内部类的执行逻辑,并画出时序图。 ![时序图](https://images.gitee.com/uploads/images/2019/0314/155531_f89a1258_1799190.png "屏幕截图.png")