双亲委派机制
原理
- 1、一个类加载器接收到类加载请求,它自己并不会先去加载,而是把这个请求委托给父类的加载器去执行
- 2、如果父类的加载器还有其父类加载器,则进一步向上委托,一次递归,请求最终到达顶层的启动类加载器;
- 3、如果父类加载器可以完成类加载任务,就成功返回,若无法完成加载任务,子加载器自己尝试去加载
(别人交代一个任务给你,你把它丢给别人去做。别人做不了,你才尝试去解决)
类加载器的分类:
1、启动类加载器(引导类加载器:BootStrap ClassLoader)
- 使用c/c++实现
- 用来加载java核心类库
- 没有父类加载器
- 作为扩展类加载器和应用程序加载器的父类
- 只加载包名为java、javax、sun等开头的类
2、扩展类加载器
- java语言编写
- 父类加载器为启动类加载器
- 从java.ext.dirs系统属性所指定的目录中加载类库,或从JDK的安装目录的jre/lib/ext子目录加载类库
3、应用程序类加载器
- java语言编写
- 父类加载器为扩展类加载器
- 负责加载环境变量classpath或系统属性java.class.path指定路径下的类库
- 是默认的类加载器。一般来说,java应用的类都是由它来完成加载