为什么要使用双亲委派机制?

为什么要使用双亲委派机制?

Java 虚拟机判断两个类是否为同一个类的依据是:类名是否相同且加载该类的加载器是否相同;

如果没有双亲委派机制, 同一个类可能会被多个类加载器加载, 如此即便是相同的类也可能会被识别为两个不同的类, 相互赋值时会出现问题;

双亲委派机制能够保证多加载器加载某个类时, 最终只有一个类加载器加载, 确保加载结果相同; 没有双亲委派机制, 假如用户编写一个名为 java.lang.Object 的类, 并放在程序的 ClassPath 中, 系统就会出现多个不同的 Object 类, 此时 Java 类型体系中基础行为会无法保证, 应用程序会变得一片混乱;

此外, 双亲委派加载机制可以保证核心类的安全, 当有人想替换核心类 String.java 时, 在双亲委派机制下, 核心类会被启动类加载器(BootstrapClassLoader)优先加载, 轮到其他类加载器再去加载时, 会跳过已经加载过的类, 所以双亲委派加载机制在一定程度上防止了危险代码的植入; 解决了类加载的安全问题;

参考文章

相关推荐
云烟成雨TD几秒前
Spring AI Alibaba 1.x 系列【74】Agentic RAG 与混合 RAG
java·人工智能·spring
小刘|2 分钟前
Spring AI 结构化输出 + 大模型参数全解(含千问调优)
java·后端·spring
云烟成雨TD4 分钟前
Spring AI Alibaba 1.x 系列【79】图执行生命周期的可观测性基础设施
java·人工智能·spring
霸道流氓气质7 分钟前
Java 单元测试生成大量 Excel 测试数据实战指南
java·单元测试·excel
io无心12 分钟前
基于Image 2的多配件商品图生成技术实现(已开源)
java·image2
javajenius15 分钟前
Pixi:用 Rust 重写 Conda 体验的包管理工具
开发语言·其他·rust·conda
逢君学术论文AI写作15 分钟前
Java第22课:Servlet获取请求参数+POST请求+表单交互
java·servlet·ai写作
神明不懂浪漫16 分钟前
【第二章】Java中的数据类型,运算符与程序逻辑控制
java·开发语言·经验分享·笔记
laowangpython16 分钟前
tokio-rstracing:Rust 可观测性的标准答案
开发语言·后端·其他·rust
小马爱打代码17 分钟前
Java 开发:过滤器(Filter)与拦截器(Interceptor)深度解析 + CORS 跨域完整解决方案
java