双亲委派机制
双亲委派模式是在Java 1.2后引入的,其工作原理的是,如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给父类的加载器去执行,如果父类加载器还存在其父类加载器,则进一步向上委托,依次递归,请求最终将到达顶层的启动类加载器,如果父类加载器可以完成类加载任务,就成功返回,倘若父类加载器无法完成此加载任务,子加载器才会尝试自己去加载。
以Test.java文件为例
-
Test.java经过编译生成Test.class字节码文件
-
Test.class字节码文件再由java虚拟机解释运行
-
进入JVM
-
类加载器
- 加载先从应用类加载器开始,应用类加载器将请求交给扩展类加载器
- 扩展类加载器再将请求交给启动类加载器,这时启动类加载器会查找自己所在的目录下是否有Test.class字节码文件,如果有则解释运行,如果没有则会抛出异常,这个时候请求会交给扩展类加载器。
- 这时扩展类加载器会查找自己所在的目录下是否有Test.class字节码文件,如果有则解释运行,如果没有则会抛出异常,这个时候请求会交给应用类加载器。
- 这时应用类加载器会查找自己所在的目录下是否有Test.class字节码文件,如果有则解释运行,如果没有则会抛出异常(找不到或无法加载主类)。
-