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

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

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

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

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

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

参考文章

相关推荐
漂洋过海的鱼儿5 分钟前
设计模式——EIT构型(三)
java·网络·设计模式
曹轲恒6 分钟前
@PropertySource、@ImportResource、@Bean
java·spring boot·mybatis
Whisper_Sy10 分钟前
Flutter for OpenHarmony移动数据使用监管助手App实战 - 应用列表实现
android·开发语言·javascript·flutter·php
小CC吃豆子16 分钟前
Python爬虫
开发语言·python
机器视觉知识推荐、就业指导19 分钟前
Qt 6 所有 QML 类型(官方完整清单 · 原始索引版)
开发语言·qt
techdashen1 小时前
Rust OnceCell 深度解析:延迟初始化的优雅解决方案
开发语言·oracle·rust
少控科技1 小时前
QT新手日记033
开发语言·qt
Anastasiozzzz1 小时前
Redis的键过期是如何删除的?【面试高频】
java·数据库·redis·缓存·面试
老神在在0011 小时前
Token身份验证完整流程
java·前端·后端·学习·java-ee
王九思1 小时前
Java 内存分析工具 MAT
java·开发语言·安全