八卦杂文——java双亲委派机制理解及Tomcat的打破

本文探讨了Java类加载器如何通过双亲委派机制确保类的唯一加载,以及Tomcat如何在类名相似的情况下打破这一机制,通过使用不同的类加载器实现隔离。
摘要由CSDN通过智能技术生成

一、为什么会有这种机制?

类加载器将.class类加载到内存中时,为了避免重复加载(确保Class对象的唯一性)以及JVM的安全性,需要使用某一种方式来实现只加载一次,加载过就不能被修改或再次加载。

二、什么是双亲委派机制?

(1)当加载一个类时,先判断此类是否已经被加载,如果类已经被加载则返回;

(2)如果类没有被加载,则先委托父类加载(父类加载时会判断该类有没有被自己加载过),如果父类加载过则返回;如果没被加载过则继续向上委托;

(3)如果一直委托都无法加载,子类加载器才会尝试自己加载。

三、如何理解双亲委派机制?

假设有一个村子,所有人都有一个独立的名字,不允许重复。
这一天赵四生了个大儿子,想叫他王二麻子(包名类型都相同),赵四不知道王二麻子这个名字是否重复,但是看看自己同辈的里面没有重名的(在这一级别类加载中没有同包同类的),赵四又问他爹赵老三,赵老三看了看同辈中人说,你隔壁王叔叔不就叫王二麻子嘛(此时出现了同包同类名的人),然后说不能叫,已经有人叫了,如果村里有人提王二麻子都认你王叔,你儿子就成了隐形人了。

如何理解Tomcat会打破双亲委派机制?

赵四第二年又喜得双胞胎,这次是他跟另外一个媳妇(Tomcat)生的,赵四虽然是个比较保守但是也很创新,考虑在给孩子起名字的时候打破常规一下,在不予上辈祖宗重名的基础上(java中的基类还是遵循双亲委派机制),给两个孩子取名狗儿,虽然两个孩子几乎一模一样(有大量的包类名相同),但赵四做了一下区分,分为大狗和小狗(一人一个类加载器,互不干涉),虽然大狗小狗很像,但是是两个独立的个体

  • 13
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值