MST

星途 面试题库

面试题:Java中双亲委派模型的工作原理是什么

请详细阐述Java类加载机制中双亲委派模型的具体工作流程,包括类加载器之间的关系以及如何委托加载类。
41.5万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

双亲委派模型工作流程

  1. 类加载器关系:在Java中,存在多个类加载器,形成树形结构。主要有启动类加载器(Bootstrap ClassLoader)、扩展类加载器(Extension ClassLoader)和应用程序类加载器(Application ClassLoader,也叫系统类加载器),此外还可以自定义类加载器。启动类加载器是最顶层,扩展类加载器是启动类加载器的子节点,应用程序类加载器是扩展类加载器的子节点。自定义类加载器一般是应用程序类加载器的子节点。
  2. 委托加载类流程:当一个类加载器收到类加载请求时,它首先不会自己去尝试加载这个类,而是把请求委托给父类加载器去完成,依次向上委托,直到启动类加载器。如果父类加载器可以完成类加载任务,就成功返回;只有当父类加载器无法完成这个加载任务时(它的搜索范围中没有找到所需的类),子类加载器才会尝试自己去加载。例如,应用程序类加载器收到加载请求,委托给扩展类加载器,扩展类加载器再委托给启动类加载器。若启动类加载器没找到,再由扩展类加载器尝试加载,若扩展类加载器也没找到,最后才由应用程序类加载器加载。

这种机制保证了Java核心类库的安全性,避免用户自定义类覆盖核心类,同时提高了类加载的效率,相同类不会被重复加载。