请解释 Java 类加载机制中的双亲委派模型指的是什么,并说明其核心工作流程。
考察说明
考查对 Java 类加载机制中双亲委派模型的理解与描述能力。
回答思路
- 【回答框架 1】双亲委派模型是 Java 类加载器的一种协作机制,核心是每个类加载器在加载类时,先委托给父加载器,父加载器无法完成时才由自身加载。
- 【回答框架 2】类加载器层级从顶层到底层为 Bootstrap、Extension、Application 和自定义加载器,请求会逐层向上传递,保证核心类由最顶层的加载器加载。
- 【回答框架 3】该模型避免了类的重复加载,并确保核心类库不会被用户自定义类覆盖,增强了安全性。
- 【回答框架 4】主要实现通过 ClassLoader 的 loadClass 方法,使用 synchronized 保证并发安全,并依次检查已加载、请求父加载器、最后尝试 findClass。
- 【回答框架 5】缺点是若父加载器无法加载但子加载器也无法处理,会抛出 ClassNotFoundException,需通过线程上下文类加载器等方法解决 SPI 等场景的加载问题。
- 【关键点 1】双亲委派先委托后自行加载,方向是自下而上请求、自上而下尝试加载。
- 【关键点 2】模型防止核心 API 被篡改,保证类加载一致性。
- 【关键点 3】loadClass 方法包含缓存检查、向上委托和最终查找三个步骤。
- 【易错点 1】误以为双亲委派是自顶向下主动加载,实际请求由子加载器发起。
- 【易错点 2】忽略 Bootstrap 加载器由 JVM 实现,不遵循普通 Java 类加载逻辑。
- 【易错点 3】将双亲委派与业务幂等直接关联,模型只关乎类加载,不保证业务逻辑的幂等性。