双亲委派机制的原理和作用

news2024/11/29 9:00:16

双亲委派机制,就必须弄清楚Java的类加载器。

什么是类加载器

Java类加载器(ClassLoader)是Java运行时环境(JRE)的一部分,负责动态的将Java类加载到Java虚拟机的内存空间。

类加载器有哪些

主要有三个:

  1. 引导类加载器(Bootstrap ClassLoader):加载Java的核心库(jre/lib/rt.jar),同时加载另外两种类加载器,由C++编写
  2. 扩展类加载器(Extensions ClassLoader):加载Java的扩展库(jre/ext/*.jar)
  3. 应用类加载器(Application ClassLoader):它根据 Java 应用的类路径(CLASSPATH)来加载 Java 类。一般来说,Java 应用的类都是由它来完成加载。

除了上面三种外,还可以自定义类加载器,以方便开发。

类加载器之间的关系

代码示例:

3fced474cd81f4a4dfa77c1715b0e794.png

结果输出:

112cb4e16869e00dd159ecde580f45f6.png

通过这段代码看出,日常编写的代码,是通过Application ClassLoader加载,其父类是Extensions ClassLoader。

实际上,Bootstrap ClassLoader也是Extensions ClassLoader的父类,但Bootstrap ClassLoader由C++编写,在Java中无法获取,所以对外显示为null。


双亲委派机制

双亲委派机制指,当某个特定的类加载器在收到类加载的请求时,会遵循下面的规则顺序:

  1. 先判断被加载的类是否加载过,如果是则结束,否则会将加载任务委托给自己的父亲;
  2. 父类加载器在收到类加载的请求时,也先判断被加载的类是否加载过,如果是则结束,否则同样将加载任务委托给自己的父亲
  3. 不断的循环进行步骤2,直到将加载任务委托给Bootstrap ClassLoader为止。此时,Bootstrap ClassLoader 会先判断被加载的类是否加载过,如果是则结束;

请注意,到这里为止,都只是在转移加载任务的请求,下面将会进行类加载。

  1. Bootstrap ClassLoader会判断能否完成加载任务,如果能则直接加载,否则会将加载任务交给子类加载器;
  2. 子类加载器也会判断能否完成加载任务,如果能则直接加载,否则会再一次将加载任务交给子类加载器;
  3. 不断的循环进行步骤2,直到最后一个类加载器,如果这个类加载器仍然不能够加载这个类,就会抛出一个异常:ClassNotFoundException。

Java双亲委派模型:为什么要双亲委派?如何打破它?破在哪里?_徐同学呀的博客-CSDN博客_为什么要使用双亲委派模型

 

双亲委派机制的好处

  1. 首先,保证 java核心库 的安全性。如果你也写了一个java.lang.String类,那么JVM只会按照上面的顺序加载jdk自带的String类,而不是你写的String类。
  2. 其次,保证同一个类不会被加载多次。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/474073.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端开发在本地开发与后台进行联调阶段时,接口自动重定向https、HSTS 与 307 状态码

开发者在本地开发与后台进行联调阶段时,Chrome 浏览器上出现 307 状态码,并跳转到 https 版 但是 307 代码是什么含义呢?页面又为何会出现 307 状态码呢?我之前都没见过这个状态码,查了才知道原来它也是一种重定向。 …

数字三角形+包子凑数(蓝桥杯JAVA解法)

数字三角形:用户登录 题目描述 上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和(路径上的每一步只可沿左斜线向下或右斜线向下走…

ArduPilot之开源代码Sensor Drivers设计

ArduPilot之开源代码Sensor Drivers设计 1. 源由2. Sensor Drivers设计2.1 front-end / back-end分层2.2 设计思想分析 3 实例理解3.1 驱动初始化3.2 业务应用代码3.3 frond-end代码3.3 back-end代码3.3.1 UART3.3.2 I2C3.3.3 SPI 4. 参考资料 1. 源由 飞控代码除了最为基础的…

《美团机器学习实践》读后感和一点思考

前言:最近拜读了美团算法团队出品的《美团机器学习实践》,这本书写于2018年,一个大模型还没有标配的时代。这本书侧重于工业界的实践,能清楚地让我们了解到工业界和学术界对机器学习的关注方向上的差异,值得一读。因为…

文件系统和软硬链接

文章目录 一.文件系统1.了解磁盘的物理结构2.磁盘的存储结构a.磁盘读取 3.磁盘的逻辑结构a.为什么操作系统不直接使用CHS地址?b.实际IO一次的大小 4.磁盘的分区管理4.1.ext文件系统a.文件查找b.文件删除 4.2目录的属性和数据 二.软硬链接软链接的建立和删除软链接的…

【VM服务管家】VM4.0软件使用_1.4 通讯类

目录 1.4.1 通讯管理:ModBus通信发送非整型数据的方法1.4.2 通讯管理:使用Modbus TCP通讯协议与流程交互 1.4.1 通讯管理:ModBus通信发送非整型数据的方法 描述 环境:VM4.0.0 现象:Modbus通信发送数据只能为Int类型&a…

快速搭建Electron+Vite3+Vue3+TypeScript5脚手架 (无需梯子,快速安装Electron)

一、介绍 😆 😁 😉 Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 嵌入 Chromium 和 Node.js 到 二进制的 Electron 允许您保持一个 JavaScript 代码代码库并创建 在Windows上运行的跨平台应用 macOS和Linux——不需…

【网课平台】Day13.订单支付模式:生成支付二维码与查询支付

文章目录 一、需求:生成支付二维码1、需求分析2、表设计3、接口定义4、接口实现5、完善controller 二、需求:查询支付结果1、需求分析2、表设计与模型类3、接口定义4、接口实现步骤一:查询支付结果步骤二:保存支付结果&#xff08…

如何写出一份大厂都不会拒绝的简历?

你好,我是宋光璠,今天我以过来人的身份教你写出一份惊艳面试官的简历。 简历算是我们过去经历的一个缩影,虽然只有短短一两页,但也能让人从中发现你的优点,一份优质的简历更是如此,所以今天我就带你从头到…

PLC模糊PID(梯形图实现)

博途PLC的模糊PID控制详细内容请查看下面的博客文章: Matlab仿真+博途PLC模糊PID控制完整SCL源代码参考(带模糊和普通PID切换功能)_博途怎么实现模糊pid_RXXW_Dor的博客-CSDN博客模糊PID的其它相关数学基础,理论知识大家可以参看专栏的其它文章,这里不再赘述,本文就双容…

网络安全常用术语

肉鸡 肉鸡指的就是被黑客成功入侵并取得控制权限的电脑。黑客们可以随意的控制肉鸡,就像在使用自己的电脑一样,很形象的比喻,就像是养的肉鸡,任黑客宰杀和利用。关键的是,在成为肉鸡后,只要黑客不对电脑进…

【VM服务管家】VM4.x算子SDK开发_3.4 控件嵌入类

目录 3.4.1 图片存储:图片保存的方法3.4.2 辅助十字线:给图像添加辅助十字线的方法3.4.3 控件调用:在WPF中使用Winform控件的方法3.4.4 图形改变事件:渲染控件上图形改变事件的实现方法3.4.5 鼠标事件:渲染控件上鼠标事…

Hive的基本操作和查询语法以及案例(大数据查询)

1、 13-Hive的基本操作和查询语法以及案例_hive分区表查询语句_大数据下的画像人的博客-CSDN博客 2、SQL 中多个 and or 的组合运算 SQL 中多个 and or 的组合运算_weixin_30611509的博客-CSDN博客sql关系型运算符优先级高到低为:not >and> orAND、OR运算符…

零基础想成为黑客,只需要四步

前言 首先要明白,该篇文章说的黑客不是那种窃取别人信息、攻击别人系统的黑客,说的是调试和分析计算机安全系统的网络安全工程师。 黑客技术的核心之一就是渗透攻防技术,是为了证明网络防御按照预期计划正常运行而提供的一种机制。就是通过模…

语音处理加窗分帧

语音处理加窗分帧 一、分帧 语音数据和视频数据不同,本没有帧的概念,但是为了传输与存储,我们采集的音频数据都是一段一段 的。为了程序能够进行批量处理,会根据指定的长度(时间段或者采样数)进行分段,结构化为我们编程…

从FPGA说起的深度学习(八)-数据并行性

这是新的系列教程,在本教程中,我们将介绍使用 FPGA 实现深度学习的技术,深度学习是近年来人工智能领域的热门话题。 在本教程中,旨在加深对深度学习和 FPGA 的理解。 用 C/C 编写深度学习推理代码高级综合 (HLS) 将 C/C 代码转换为…

11款专家级渗透测试工具

导语:在本文中,我们将深入研究渗透测试员用来挫败客户防御系统的工具。 渗透测试员,有时也称“道德黑客”,他们本质上是安全专家,负责对客户的网络或系统发起模拟攻击,以寻找潜在漏洞。他们的目标是展示恶意…

电脑技巧:Windows系统原版纯净软件必备的两个网站

目录 一、MSDN我告诉你 二、helloWindows 三、总结 Windows系统是个人电脑使用最广泛的操作系统,大家可能会遇到下载Windows镜像、SQLServer、Office等官方软件,会遇到各种各样捆绑、广告软件,甚至还有可能电脑被植入病毒的风险。该如何避…

代码随想录算法训练营第四十五天|70. 爬楼梯 (进阶)、322. 零钱兑换、279.完全平方数

文章目录 70. 爬楼梯 (进阶)322. 零钱兑换279.完全平方数 今天的题一道是求装满背包的可能情况;另两道都是求装满背包的所需的最小物品数目,不用考虑是组合还是排序问题 70. 爬楼梯 (进阶) 背包问题,求装满…

设置苹果电脑vsode在新窗口中打开文件

0、前言 最近切换到mac电脑工作,又得重新安装一些工具软件并设置。虽然这些设置并表示啥复杂的设置,但是久了不设置还是会忘记。于是记录之,也希望给能帮助到需要的人。 我们使用vscode阅读或者编辑文件时,有时候希望同时打开多…