1. JDK自带有三个类加载器:bootstrap ClassLoader、ExtClassLoader、AppClassLoader。
  2. BootStrapClassLoader是ExtClassLoader的父类加载器,默认负责加载%JAVA_HOME%lib下的jar包和 class文件。
  3. ExtClassLoader是AppClassLoader的父类加载器,负责加载%JAVA_HOME%/lib/ext文件夹下的jar包和 class类。
  4. AppClassLoader是自定义类加载器的父类,负责加载classpath下的类文件。系统类加载器,线程上下文加载器
  5. 继承ClassLoader实现自定义类加载器

双亲委派模型的好处

主要是为了安全性,避免用户自己编写的类动态替换 Java的一些核心类,比如 String。 同时也避免了类的重复加载,因为 JVM中区分不同类,不仅仅是根据类名,相同的 class文件被不同的 ClassLoader加载就是不同的两个类