双亲委派机制

 
 

双亲委派机制指的是:

自底向上查找是否加载过,再由顶向下进行加载。
notion image
 
 

一、类加载器的双亲委派机制

在java中如何使用代码的方式去主动加载一个类?
  1. 使用Class.forName方法 , 使用当前类的类加载器去加载指定的类
  1. 获取到类加载器, 通过类加载器的LoadClass方法指定某个类加载器加载
 
  • 每个java实现的类加载器中保存了一个成员变量叫 “父”(Parent) 类加载器
    • 可以理解为他的上级 并不是继承关系
      notion image
       
  • 应用程序类加载器的parent父类加载器是扩展类加载器 ,扩展类加载器的parent是空
  • 启动类加载器使用C++编写没有上级类加载器
notion image
 
  • 再累加载的过程中,每个类加载器都会先检查是否已经加载了该类,如果已经加载则直接返回
    • 否则会将加载请求委派给父类加载器
      notion image
       
  • 如果类加载的parent为null , 则会提交给启动类加载器处理
notion image
 
  • 如果所有的父类加载器都无法加载该类 , 则由当前类加载器尝试加载 .所以看上去是自顶向下的尝试加载
notion image
  • 第二次再去加载相同的类 , 仍然会向上进行委派 , 如果某个类加载器加载过就会直接返回
notion image
 

双亲委派机制解决三个问题:

notion image
 

双亲委派机制有什么用?

notion image