1. 单例模式定义与常见写法:单例模式要求一个类仅有一个对象实例,并提供全局访问点。常见写法有饿汉式、懒汉式、双重加锁验证、静态内部类、枚举等方式。 2. 重点实现方式剖析 - 双重加锁验证(DCL):先判断实例是否为空,为空时加锁,加锁后再次判断为空才创建对象,减少锁竞争以提升效率。不过存在指令重排问题,可能获取到未初始化完全的对象,在Java 5及后续版本,通过将实例变量声明为volatile可解决 。 - 静态内部类方式:借助JVM保证创建单例对象的线程安全与唯一性。外部类加载时,内部类不会立即加载,调用获取实例方法时才会加载并初始化单例对象,实现延迟加载,是较好的实现方法。 - 枚举方式:Effective Java作者推荐,是目前单例模式最佳实现。枚举初始化依靠static代码块,类加载时由JVM调度,线程安全。它还能防止反射和序列化破坏单例,反序列化通过Value方法查找枚举,而非新建对象。其他单例实现可在类上添加readResolve方法防止序列化破坏单例。

相关推荐

点赞 评论 收藏
分享
难上难nan:不是几分钟的问题,面试都能迟到(秋招面了大概二十家,就一家面试官迟到,其他都提前几分钟上线,基本素养),拉黑你没毛病,干脆利落
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务