双亲委派机制
当一个类加载器收到类加载请求时,该类加载器会先将请求委派给父类加载器,直至最顶端的父类加载器,当最顶端的父类加载器在搜索范围内找不到指定类时,子类加载器一层一层往下搜索。
实际工程流程:
1 当Application ClassLoader 收到一个类加载请求,将该请求委派给父类加载器Extension ClassLoader
2 当Extension ClassLoader收到一个类加载请求,将该请求委派给父类加载器Bootstrap ClassLoader
3 如果Bootstrap ClassLoader加载失败,就会让Extension ClassLoader尝试加载
4 如果Extension ClassLoader也加载失败,就会让Application ClassLoader尝试加载
5 如果Application ClassLoader也加载失败,就会让自定义 类加载器尝试加载
6 如果均加载失败,就会抛出ClassNotFoundException异常
7 父类加载器加载后,子类加载器不会再加载
类加载器
类加载器是jre的一部分,负责动态将类添加到java虚拟机
- 虚拟机自带的加载器
- 启动类(根)加载器
- 扩展类加载器
- 应用程序加载器