上文说到,ClassLoader 在加载类时有一定的层次关系和规则。这四种类加载器分别负责不同路径的类的加载,并形成了一个类加载的层次结构。类的加载器可以有多种,每种类加载器有其特定的职责范围,为了防止出现加载混乱,在类加载时需要遵循一些规则。
1、什么是双亲委派机制?
首先类加载器是分级别的,从上到下分别是:BootStrapClassLoader、ExtClassLoader、AppClassLoader、CustomClassLoader。这四种类加载器会形成一种父子关系,高层为低层的父加载器。在进行类加载时,首先会自底向上挨个检查是否已经加载了指定类,如果已经加载则直接返回该类的引用。如果到最高层也没有加载过指定类,那么会自顶向下挨个尝试加载,直到用户自定义类加载器,如果还不能成功,就会抛出异常。
双亲委派模型工作流程如下: