双亲委派机制[人话版]

本篇文章仅作为记录学习之用,不具有参考价值. 如果您想系统学习,请移步最下方参考资料.

介绍

今天逛了一下牛客网, 看到有面试问到了双亲委派机制是什么, tomcat有没有打破双亲委派 , 瞬间懵逼, 听都没听过的名字, 听着就稀奇古怪. 然后翻了一下网上的答案,大概了解怎么回事. 特意整理下, 如果学习请参考其他博客

双亲委派图解

加载逻辑

双亲委派名称由来暂时不知道. 它的加载逻辑大概就是 加载类的时候, 先去从父加载器中找. 如果父加载器还有父加载器, 就一直往上找, 一直找到最顶层的那个加载器, 然后往里边加载类,如果此加载器没有这个类, 就让它子类加载, 以此类推. 直到找到需要加载的类为止

举例:

小明向老爸要100块钱零花钱, 然后你老爸又向你爷爷要100块, 如果你爷爷是没有父级, 那么他应该直接从腰包里加载100块. 此时, 你爷爷并没有100块, 然后向下 你父亲来加载100块, 如果你父亲也没有100块, 你自己从腰包里掏, 如果你也没有100块, 那就是 ClassNotFound了.

图解

在这里插入图片描述

在这里插入图片描述

tomcat打破双亲委派机制

tomcat是打破了双亲委派机制的, 众所周知 tomcat可以部署多个项目, 比如我们在webapps下,放入两个war包, 它们都有一个类,叫做User,并且它们的类全限定名都一样,比如都是com.yyy.User。但是他们的具体实现是不一样的. 原因就是 每个 Web 应用创建一个类加载器实例(WebAppClassLoader),该加载器重写了loadClass方法,优先加载当前应用目录下的类,如果当前找不到了,才一层一层往上找(:

在这里插入图片描述

双亲委派的作用

  1. 保护程序安全,防止核心API被随意篡改
  2. 防止类重复加载.

参考资料

https://zhuanlan.zhihu.com/p/423436230
https://cloud.tencent.com/developer/article/2055271

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值