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

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

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

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

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

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

参考文章

相关推荐
czhc11400756633 分钟前
C#1114 枚举
开发语言·c#
z_鑫14 分钟前
Java线程池原理深度解析
java·开发语言·后端
春生野草17 分钟前
启动Nginx
java·微服务·架构
悟空CRM服务22 分钟前
开源的力量:如何用开源技术构建高效IT架构?
java·人工智能·架构·开源·开源软件
小呀小萝卜儿33 分钟前
2025-11-14 学习记录--Python-特征归一化方法(Min-Max或StandardScaler)
开发语言·python·学习
神仙别闹40 分钟前
基于SpringMVC+Spring+MyBatis开发的个人博客网站
java·spring·mybatis
雪域迷影1 小时前
C++ 11 中的move赋值运算符
开发语言·c++·move
华仔啊1 小时前
MyBatis-Plus 不只是简化CRUD!资深架构师总结的15个高阶用法
java·后端·mybatis
jf加菲猫1 小时前
第2章 Hello World
开发语言·c++·qt·ui
Han.miracle1 小时前
Java EE --JUC
java·线程池·原子类·callable·semaphore·reentrantlcok