什么是双亲委派模型?

发布时间:2024年01月13日

Java面试题

什么是双亲委派模型?

????????Java 中的类加载器包括BootstrapClassLoader(启动类加载器),ExtensionClassLoader(扩展类加载器)以及AppClassLoader(应用程序类加载器)。其中BootstrapClassLoader主要用来加载JDK内部的核心类库,比如rt.jar,ExtensionClassLoader主要用来加载lib/ext目录下的jar包,AppClassLoader主要负责加载当前应用 classpath 下的所有 jar 包和类。

????????双亲委派的执行流程是,当类加载器进行类加载时,先判断是否存在父加载器,如果存在则调取父类加载器中的loadClass方法,直到最顶层的Bootstrap类加载器,此时开始加载类,如果自己无法加载,则使用子类加载器尝试加载。

????????这种设计的好处是,避免类的重复加载,保证了 Java 的核心 API 不被篡改。

如何打破双亲委派?

? ? ? ?重写ClassLoader中loadClass()方法即可。因为双亲委派的原理就是通过递归调用此方法来实现的。

? ? ? ? 实际应用场景:Tomcat 下 Web 应用之间的类实现隔离。就是自定义了类加载器 WebAppClassLoader 来通过打破双亲委托机制来实现的。

文章来源:https://blog.csdn.net/liguo886/article/details/135548939
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。