双亲委派机制
了解双亲委派机制前需要了解java的类加载器
类加载器
java文件是如何在JVM中运行的呢?
当编写的Java源代码被编译器编译成.class的字节码文件。然后由我们的ClassLoader(类加载器)负责将这些class文件给加载到JVM中去执行。
- BootstrapClassLoader:启动类加载器,主要是负责加载JAVA_HONE/lib下面的jar包和class文件。加载java的核心库
- ExtClassLoader:扩展类加载器,主要是负责加载JAVA_HONE/lib/ext下面的jar包和class文件。加载扩展库
- appClassLoader:系统类加载器,主要是负责加载开发人员自己写的代码或者自己引入的jar包
- CustomClassLoader:自定义类加载器,自己定义的类加载器
双亲委派机制
双亲委派:当类加载器加载.class文件时,首先会把文件委托给他们的父类加载器,一直向上委托,如果父类加载器没有加载该文件,自己再加载
- 首先向上对父类加载器进行委派,实际上是看父类加载器是否加载了该类,如果加载了则返回,没有加载则继续向上委派
- 委派到顶层后,查看缓存中是否存在该类,有则返回,没有则向下查找
- 向下查找加载路径,有则返回,没有则继续向下查找
- 回到最初的类加载器还是没有加载过,则由最初的类加载器进行加载
作用
- 避免自己写的类替换核心类
- 避免类的重复加载