面试题:双亲委派机制

定义:
当一个类加载器收到了类加载的请求的时候,他不会直接去加载指定的类,而是把这个请求委托给自己的父加载器去加载。只有父加载器无法加载这个类的时候,才会由当前这个加载器来负责类的加载。
双亲委派机制的意义:
1、通过委派的方式,可以避免类的重复加载,当父加载器已经加载过某一个类时,子加载器就不会再重新加载这个类。
2、通过双亲委派的方式,还保证了安全性。因为Bootstrap ClassLoader在加载的时候,只会加载JAVA_HOME中的jar包里面的类,如java.lang.Integer,那么这个类是不会被随意替换的,除非有人跑到你的机器上, 破坏你的JDK。那么,就可以避免有人自定义一个有破坏功能的java.lang.Integer被加载。这样可以有效的防止核心Java API被篡改。
为什么需要破坏双亲委派机制?
双亲委派机制有他存在的意义,不过也存在许多场景是需要破坏这个机制的,所以双亲委派机制也非必然。比如 tomcat web容器里面部署了很多的应用程序,但是这些应用程序对于第三方类库的依赖版本却不一样,但这些第三方类库的路径又是一样的,如果采用默认的双亲委派类加载机制,那么是无法加载多个相同的类。所以,Tomcat破坏双亲委派原则,提供隔离的机制,为每个web容器单独提供一个WebAppClassLoader加载器。




全部评论
双亲委派机制是类似啃老,先委派父类类加载,如果父类委派不超过,就只能子类自己加载。优点就是父类加载过不用重复加载。破坏是因为业务场景需要加载多个相同的类
点赞 回复 分享
发布于 2024-03-08 12:16 辽宁

相关推荐

1. 自我介绍(先做一个自我介绍)2. 回顾计算机相关基础知识时有没有什么收获?3. 怎么查看Docker日志?4. Linux系统上看日志文件用什么命令?正在生成的日志和要截取的日志分别用什么参数?5. 日志命令中- f和其他参数的区别是什么?- f是干什么的?不带- f呢?6. 用三两句话简单介绍自己做的事情和擅长的技能。7. 参考百度网盘做AI云盘时,怎么推测它的功能和实现?举具体例子(如文件目录拉取)说明怎么推测、怎么实现,以及如何判断推测对错。8. 文件存储和目录存储的区别是什么?它们的数据结构是什么样子的?9. 如何通过一个文件回到它的上一层目录?回到上面三层呢?若要实现点击地址行直接跳转,准备怎么设计?10. 把一个文件/目录从一个目录移到另一个目录,存储里要改变哪些东西?移动目录时怎么做?11. 删除目录时用了什么操作?12. 目录下文件特别多,递归去做移动/删除会有什么问题?怎么解决?13. 短链是怎么做的?(是不是复现别人成型的东西)14. 长链怎么转成短链?长链和短链的对应关系是什么?15. 62取模得到的是什么?哈希取模会不会有问题?16. 短链算法能支持多少范围的链接?17. 作为短链平台,要支持很多公司生成短链,且要求短链短、支持量足够大,怎么设计短链算法?18. Java中HashMap是怎么实现的?1.7和1.8有什么区别?19. HashMap为什么既要链表又要红黑树?两者性质有什么差别?20. 什么是平衡树?红黑树是怎么维持平衡的?需要旋转吗?21. 除了红黑树,还了解哪些平衡树?22. Java中JVM内存分配时,新生代和老年代的担保机制具体是什么?23. GVM的内存结构是什么样子的?新生代、老年代、元空间分别存什么内容,数据怎么整理流转?24. 除了复制算法,还有哪些垃圾回收算法?它们有什么区别?25. 分代收集算法是什么?26. MySQL的事务隔离级别有哪些?分别是什么意思?27. 事务隔离级别中,无锁的实现方式是什么?MVCC了解吗?怎么实现的?28. MVCC能解决幻读问题吗?为什么?29. Redis中用了什么数据结构?Redis的字符串数据结构是怎么实现的?30. 给定旋转有序数组(如1356789→7891356),设计查找算法(如查找5、8、2)。31. 设计的查找算法和二分查找有什么区别?32. 给定二叉树的两个节点,怎么找它们的最低公共祖先?33. 给定二叉树的三个节点,怎么找最低公共祖先?34. 给定二叉树的四个、五个节点,怎么找最低公共祖先?35. 给定多个段(段内有序,合并时相同k的item保留value最大的),设计合并算法,说明思路。36. 有没有什么问题想问面试官?
点赞 评论 收藏
分享
09-09 09:17
已编辑
东华理工大学 Java
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务