双亲委派模型

简介: 双亲委派模型

双亲委派模型

在介绍双亲委派模型前,我们需要引入类加载器的概念

绝大部分Java程序都会使用到以下3种系统提供的类加载器:

  • 启动类加载器(Bootstrap ClassLoader)  :JDK中的常用类大都由启动类加载器加载,如java.lang.String、java.util.List等。需要特别说明的是,启动类Main class也由启动类加载器加载。
  • 扩展类加载器(Extension ClassLoader):位于rt.jar中,其被用于JavaFX的开发之中。
  • 应用程序类加载器(Application ClassLoader): 启动类Main class、其他如工程中编写的类、maven引用的类,都会被放置在类路径下。Main class由启动类加载器加载,其他类由应用程序类加载器加载。

但是,JVM建议用户将应用程序类加载器作为自定义类加载器的父类加载器。则类加载的双亲委派模型如图:

image.png

定义

双亲委派模型要求除了顶层的启动类加载器外,其余的类加载器都应当有自己的父类加载器。

双亲委派模型的工作过程是:

  • 如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成。
  • 每一个层次的类加载器都是如此。因此,所有的加载请求最终都应该传送到顶层的启动类加载器中。
  • 只有当父加载器反馈自己无法完成这个加载请求时(搜索范围中没有找到所需的类),子加载器才会尝试自己去加载。

比如:现在自定义类中有一个String类,它不会从自身类中寻找String类(即使自身有自己实现的String类),而是在其父类(Application ClassLoader)寻找,如果还没找到,那么找其父类的父类(Extension ClassLoader),再没找到的话就找(Bootstrap ClassLoader),如果最终还没找到,将抛出ClassNotFoundException异常。

作用

对于任意一个类,都需要由加载它的类加载器和这个类本身一同确立其在虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类名称空间。因此,使用双亲委派模型来组织类加载器之间的关系,有一个显而易见的好处:类随着它的类加载器一起具备了一种带有优先级的层次关系。


相关文章
|
5天前
|
机器学习/深度学习 并行计算 小程序
DeepSeek-V3.2-Exp 发布,训练推理提效,API 同步降价
今天,我们正式发布 DeepSeek-V3.2-Exp 模型,这是一个实验性( Experimental)的版本。作为迈向新一代架构的中间步骤,V3.2-Exp 在 V3.1-Terminus 的基础上引入了 DeepSeek Sparse Attention(一种稀疏注意力机制…
142 0
DeepSeek-V3.2-Exp 发布,训练推理提效,API 同步降价
|
2月前
|
Ubuntu Linux
Ubuntu 25.04 内核确定,Linux 6.14 带来全新体验
Linux 6.14 将带来诸多新特性,包括新的 AMDXDNA 加速器驱动程序,可能完成的 NTSYNC 驱动程序,以及更多图形驱动程序改进等。
|
算法 调度
处理机(CPU)调度
处理机(CPU)调度
449 1
|
机器人 Python
ROS2教程 03 节点Node
本文是关于ROS2(机器人操作系统2)的教程,介绍了ROS2的节点概念、与ROS1的区别、节点的编写和基本流程、ros2的node相关命令,以及如何对节点名进行重映射,旨在帮助读者理解ROS2中节点的创建和操作。
426 0
ROS2教程 03 节点Node
|
存储 人工智能 弹性计算
通义万相AI绘画创作解决方案体验
在数字化时代,艺术创作正以前所未有的方式被重塑。最近,我有幸深入了解并亲身体验了阿里云的通义万相——一款集成了人工智能技术的绘画工具。我将从部署流程、功能表现、用户体验等方面分享我的一些体验心得。
670 4
|
网络架构 芯片 内存技术
TP_Link WR886N 硬改闪存16M内存64M,刷入openwrt
TP_Link WR886N 硬改闪存16M内存64M,刷入openwrt
1116 0
|
移动开发 算法
秒懂算法 | A*搜索
本篇内容包括了A*搜索算法的原理精解以及2个例题。
829 1
秒懂算法 | A*搜索
|
小程序 JavaScript 前端开发
目前为止最全的微信小程序项目实例
目前为止最全的微信小程序项目实例
577 0
|
监控 新能源 数据库
软著-风电场后台管理系统
目录 1.引言 1 1.1前言 1 1.2项目背景 1 2. 功能模块 2 2.1总体设计 2 2.2功能模块设计 2 2.3系统数据库设计 6 3. 系统实现 6 3.1系统首页 6 3.2电机管理模块实现 7 3.3齿轮箱管理模块实现 8 3.4发电量管理模块实现 9 3.5系统设置模块实现 10 3.6用户管理模块实现 10
586 0
软著-风电场后台管理系统