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

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

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

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

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

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

参考文章

相关推荐
weixin_531651811 分钟前
Rust 的所有权机制
java·开发语言·rust
江公望5 分钟前
QT/QML qmlRegisterType()函数浅谈
开发语言·qt
foundbug9996 分钟前
MATLAB中实现信号迭代解卷积功能
开发语言·深度学习·matlab
Seven9713 分钟前
SPI机制:服务扩展的核心技术
java
NE_STOP22 分钟前
shiro_实现分布式会话SessionManager、限制密码重试次数和并发登录控制
java
雪风飞舞25 分钟前
python根据音频生成柱状图
开发语言·python·音视频
Seven9725 分钟前
剑指offer-63、数据流中的中位数
java
毕设源码-钟学长27 分钟前
【开题答辩全过程】以 基于Spring Boot的社区养老服务管理系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
nbsaas-boot34 分钟前
slice / map 在 Go GC 与内存碎片上的真实成本
开发语言·后端·golang
会飞的小新1 小时前
Shell 脚本中的信号与 trap:从 Ctrl+C 到优雅退出
linux·开发语言