当前位置: 首页 > news >正文

双亲委派模型(Parents Delegation Model)(JDK 8)

类加载器的双亲委派模型在 JDK 1.2 时期被引入,并被广泛应用于此后几乎所有的 Java 程序中,但它并不是一个具有强制性的约束力的模型,而是 Java 设计者们推荐给开发者的一种加载器实现的最佳实践。

一、类加载器

Java 虚拟机设计团队有意把类加载阶段中的 “ 通过一个类的全限定名来获取描述该类的二进制字节流 ” 这个动作放到 Java 虚拟机外部去实现,以便让应用程序自己决定如何去获取所需的类。实现这个动作的代码被称为 “ 类加载器 ”(Class Loader)。

判断两个类的是否 “ 相等 ”,是由类和加载类的类加载器共同决定的。
这里包括 Class 对象的 equal(),isAssignableFrom(),isInstance()和 instanceof 关键字的判断。

二、双亲委派模型

2.1、双亲委派模型的建立

从虚拟机的角度,只有两种类加载器,一种启动类加载器(Bootstrap ClassLoader),使用 C++实现,是虚拟机的一部分,另一种是继承自抽象类java.lang.ClassLoader的启动器。

但是在虚拟机实际中,提供了三种类加载器:

在虚拟机内部,加载器之间存在一定的关系如下:

而这种层级关系,是JDK 1.2以来,虚拟机设计者为开发者提供的类加载器最佳实践模型。这种类似父子关系的层级模型称为 “双亲委派模型(Parents Delegation Model)”。这种父子关系并不是依赖于继承,而是使用的组合。

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

  1. 当前类加载器首先从自己已经加载的类(缓存)中,查询是否此类已经加载,如果已经加载,则直接返回原来已经加载的类。
  2. 如果在当前类加载器的缓存中,没有找到期待被加载的类时,则委托父类加载器去加载。父类加载器采用同样的策略,首先查看自己的缓存,(如果仍然没有)则继续委托其父类加载去加载,一直到 BootStrapClassLoader(启动类加载器)。
http://www.cnnetsun.cn/news/2870469.html

相关文章:

  • spring设置上传文件大小、静态文件路径
  • 硬件工程师必读:从MCU数据手册封装图纸到PCB设计实战
  • windows装机常用软件
  • MC9S12KT256 MEBIV3端口E配置:从GPIO到外部总线的切换与避坑指南
  • 别再复制粘贴了!用Component封装一个可复用的微信小程序自定义TabBar组件
  • 别再只会用DDS IP核了!深入理解FPGA中DDS的原理与手动实现(以正弦波生成为例)
  • 告别定时器轮询!用STC51外部中断+状态机优雅解码EV1527 433M遥控信号
  • 用STM32G431RBT6的KEY中断实现长按、短按与连发:一个结构体搞定状态机
  • 3步轻松释放C盘空间:FreeMove智能文件迁移工具完全指南
  • WechatBot技术方案:构建本地化微信消息自动化处理系统
  • 深度学习开发环境配置 Ubuntu18.04+驱动+CUDA10.2+CUDNN8.4.0
  • 3步打造智能游戏管家:阴阳师玩家的时间管理终极解决方案
  • xhs项目:企业级小红书数据采集架构设计与生产实践
  • 期货 K 线算信号 tick 级止损:天勤双序列 wait_update 触发规则
  • 非交换凸集嵌入正则性:从经典到量子框架解析
  • 深入解析NXP S12MSCANV3:CAN总线控制器核心机制与工程实践指南
  • 别再只用Mosaic了!目标检测数据增强组合拳:Letterbox + Mosaic + MixUp实战与效果对比
  • NCM音频格式转换工具:3分钟解锁加密音乐,畅享无损音质
  • 告别雾霾图!用Python+OpenCV手把手实现Retinex图像增强(附SSR/MSR/MSRCR完整代码)
  • 如何为Unity游戏实现智能多语言翻译:XUnity.AutoTranslator完整指南
  • 双击即用的桌面水印工具,文字/图片/二维码全支持,纯绿色免安装
  • 安卓手机蓝牙点不动、变灰时的快速自救工具
  • APK-Installer终极指南:如何在Windows上轻松安装安卓应用
  • 076、亮度自适应降噪:根据局部亮度动态调整降噪强度,避免暗部涂抹
  • 计算机毕业设计之基于BERT的文本情感识别算法研究与实现
  • 如何零代码高效制作专业H5页面?开源可视化编辑器h5maker实战指南
  • uni-app跨端开发优缺点深度解析:2026企业项目选型指南
  • apple-starflow服务端集成指南:modelExperienceController与API调用实战
  • 全网超全渗透测试入门教程:搞懂定义、掌握方法、熟悉流程、玩转工具,从零学到精通
  • 元宝 LeetCode 3139. 使数组中所有元素相等的最小开销 Java实现