#埃尔法哥哥#类加载机制与双亲委派( 二 )
扩展类加载器ExtensionClassLoader 。 该加载器主要是负责加载libext , 该加载器可以被开发者直接使用
应用程序类加载器ApplicationClassLoader 。 该类加载器也称为系统类加载器 , 它负责加载用户类路径CLASS_PATH上所指定的类库 , 开发者可以直接使用该类加载器 , 如果应用程序中没有自定义过自己的类加载器 , 一般情况下这个就是程序中默认的类加载器
下图展示了类加载器之间的这种层次关系 。 这种模型被称为类加载器的双亲委派模型
文章图片
双亲委派模型的工作过程是:如果一个类加载器收到了类加载的请求 , 它首先不会自己去尝试加载这个类 , 而是把这个请求委派给父类加载器去完成 , 每一个层次的类加载器都是如此 , 因此所有的加载请求都最终应该传送到顶层的启动类加载器中 , 只有当父类加载器反馈自己无法完成这个加载请求(它的搜索范围中没有找到所需的类)时 , 子类加载器才会尝试自己去加载 。
为什么这么设计?
【#埃尔法哥哥#类加载机制与双亲委派】使用双亲委派模型来组织类加载器之间的关系 , 有一个显而易见的好处就是Java类随着它的类加载器一起具备了一种带有优先级的层次关系 。 例如类java.lang.Object , 它存放在rt.jar之中 , 无论哪一个类加载器要加载这个类 , 最终都是委派给处于模型最顶端的启动类加载器进行加载 , 因此Object类在程序的各种类加载器环境中都是同一个类 。 相反 , 如果没有使用双亲委派模型 , 由各个类自行去加载的话 , 如果用户自己编写了一个java.lang.Object的类 , 并放在程序的CLASS_PATH中 , 那系统中将会出现多个不同的Object类 , Java体系同最基础的行为也就无法保证 , 应用程序也会变得一片混乱 。
- 埃尔法哥哥万物互联的5G时代,将会给我们的生活带来哪些变化?
- 埃尔法哥哥我学python的一点感受
- 埃尔法哥哥使用哪种编程语言的开发人员最幸福?
- 埃尔法哥哥vue移动端开发时,客户端如何判断当前设备是Android还是IOS
- 埃尔法哥哥还可以做扫地机器人啊,自动驾驶不做了
- 埃尔法哥哥短期内难以找到替代华为海思的客户,寒武纪交出上交所答卷
- 埃尔法哥哥人工智能与人类的未来
- 爱搞事的瑞哥哥5G最具性价比手机,华为再次发力!荣耀X10成为标杆
- 牛牛侃天下嫂子卖掉嫁妆养他,结果养出位超级富豪,父亲去世后哥哥辍学打工
- 埃尔法哥哥Arvind Krishna全球首秀,IBM新CEO