类加载器双亲委派机制

public class String {
    @Override
    public java.lang.String toString() {
        return "hello";
    }
//双亲委派机制是安全的
    public static void main(String[] args) {
        String string = new String();
        string.toString();
    }
}

 这就涉及到了双亲委派机制

在介绍双亲委派机制的时候,不得不提ClassLoader。说ClassLoader之前,我们得先了解下Java的基本知识。  
  Java是运行在Java的虚拟机(JVM)中的,但是它是怎么就运行在JVM中了呢?我们在IDE中编写的Java源代码被编译器编译成.class的字节码文件。然后由我们得ClassLoader负责将这些class问价加载到JVM中去执行。  
  JVM中提供了三层的ClassLoader:

    • Bootstrap classLoader:主要负责加载核心的类库(java.lang.*等),构造ExtClassLoader和APPClassLoader。

    • ExtClassLoader:主要负责加载jre/lib/ext目录下的一些扩展的jar。

    • AppClassLoader:主要负责加载应用程序的主函数类

1.类加载器收到类加载的请求

2.将这个请求向上委托给父类加载器去完成,一直向上委托,直到启动类加载器

3.启动类加载器检查是否能够加载当前这个类,能加载就结束,使用当前的加载器,否则,抛出异常,通知子加载器进行加载

4.重复步骤3

原文地址:https://www.cnblogs.com/IanIan/p/13840315.html