埃尔法哥哥■类加载机制与双亲委派( 二 )
扩展类加载器ExtensionClassLoader 。 该加载器主要是负责加载libext , 该加载器可以被开发者直接使用
应用程序类加载器ApplicationClassLoader 。 该类加载器也称为系统类加载器 , 它负责加载用户类路径CLASS_PATH上所指定的类库 , 开发者可以直接使用该类加载器 , 如果应用程序中没有自定义过自己的类加载器 , 一般情况下这个就是程序中默认的类加载器
下图展示了类加载器之间的这种层次关系 。 这种模型被称为类加载器的双亲委派模型

文章图片
双亲委派模型的工作过程是:如果一个类加载器收到了类加载的请求 , 它首先不会自己去尝试加载这个类 , 而是把这个请求委派给父类加载器去完成 , 每一个层次的类加载器都是如此 , 因此所有的加载请求都最终应该传送到顶层的启动类加载器中 , 只有当父类加载器反馈自己无法完成这个加载请求(它的搜索范围中没有找到所需的类)时 , 子类加载器才会尝试自己去加载 。
为什么这么设计?
使用双亲委派模型来组织类加载器之间的关系 , 有一个显而易见的好处就是Java类随着它的类加载器一起具备了一种带有优先级的层次关系 。 例如类java.lang.Object , 它存放在rt.jar之中 , 无论哪一个类加载器要加载这个类 , 最终都是委派给处于模型最顶端的启动类加载器进行加载 , 因此Object类在程序的各种类加载器环境中都是同一个类 。 相反 , 如果没有使用双亲委派模型 , 由各个类自行去加载的话 , 如果用户自己编写了一个java.lang.Object的类 , 并放在程序的CLASS_PATH中 , 那系统中将会出现多个不同的Object类 , Java体系同最基础的行为也就无法保证 , 应用程序也会变得一片混乱 。
推荐阅读
- 三生石哥哥多家快递公司宣布会提高快递运送费用
- 埃尔法哥哥互联网空间会被用完吗?2025年全世界数据总量将会超过16万EB
- 埃尔法哥哥 人工智能与科技传播领域的融合
- 【埃尔法哥哥】kNN分类算法及其python实现
- 埃尔法哥哥■区块链技术迎风而上,ETX公链解决行业痛点,信息时代安全为王
- 埃尔法哥哥@Spark 数据倾斜的 8 大实用方法,解决
- 『埃尔法哥哥』为什么你写的代码别人看不懂?
- 「埃尔法哥哥」ICCV2019:DeepFill一个用于生成图像修复任务的开源框架
- 『埃尔法哥哥』每一个程序员的必经之事
- 埃尔法哥哥■假装网络工程师-TCP/IP与静态路由
