7、类加载器双亲委派机制

7.1、类加载器结构

  在“双亲委托机制”中,各个类加载器之间按照父子关系形成树形结构,除了根加载器之外,其余的类加载器都有且只有一个父加载器。

7.2、什么是双亲委派机制?

  当某个类加载器加载某个.class文件时,它首先会把这个任务委托给他的上级类加载器,递归这个操作,如果上级的类加载器没有加载,自己才会去加载这个类。

  图解如下:

 7.3、案例

package com.shtec.classLoader;

public class Test03 {
    
    /*
     * 使用【双亲委派机制】分析Demo03类的加载过程:
     *  1、调用“系统或应用类加载器”加载Demo03的.class文件
     *  2、“系统或应用类加载器”交给它的父加载器“ext扩展类加载器”进行加载
     *  3、“ext扩展类加载器”又将Demo03.class文件交给“根加载器”进行加载
     *  4、“根加载器”加载不了---->ext扩展类加载器加载不了---->系统或应用类加载器加载
     * 最终由系统类加载器“AppClassLoader”加载该类
     */
    public static void main(String[] args) throws Exception {
        Class<?> clazz = Class.forName("com.shtec.classLoader.Demo03");
        System.out.println(clazz.getClassLoader());
        //输出:
        //sun.misc.Launcher$AppClassLoader@73d16e93
    }

}
//定义一个内部类
class Demo03{
    
}
posted @ 2020-02-20 21:47  java小天地  阅读(185)  评论(0编辑  收藏  举报