开发者社区> 问答> 正文

什么是classloader的双亲委派模型

什么是classloader的双亲委派模型

展开
收起
1658458755422780 2020-03-31 17:24:54 1387 0
2 条回答
写回答
取消 提交回答
  • 双亲委派就是指当类加载器要加载一个类时,它首先不自己加载,而是委派给父级加载器去加载,只有当父级加载器找不到这个类时,才会自己尝试加载。 Java中判定两个类是同一个的时候,不仅仅是类全名称一致,也要两个类是同一个类加载器加载的,有了双亲委派机制,就可以保证同一个类不会被不同的类加载器加载。另外这也保证了安全性

    2020-03-31 20:03:02
    赞同 展开评论 打赏
    1. 定义:除了顶层的Bootstrap加载器,其他类加载器都应当有自己的父加载器
    2. 工作过程
      • 类加载器将类加载请求委派给父加载器
      • 只有父加载器无法加载时,子加载器才会自己加载
    3. 好处:保证自定义的与系统类全限定名相同的类,不会被类加载器加载
    4. 建议:不提倡重写LoadClass(),应当覆盖findClass(),保证符合双亲委派模型
    5. 突破双亲委派模型
      • 方法 1) Thread.currentThread().getContextClassLoader() 2) ClassLoader.getClassLoader(Reflection.getCallerClass()) 3) sun.misc.VM.lastestUserDefinedLoader()
      • 示例 1) JDBC:通过Thread Context ClassLoader达到父类加载器请求子类加载器完成类加载的动作,实际违背了双亲委派模型 2) OSGI
    6. SPI:Service Provider Interface
    2020-03-31 17:26:23
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载