美文网首页
java双亲委派模型及其破坏

java双亲委派模型及其破坏

作者: linghuozi | 来源:发表于2019-03-09 16:46 被阅读0次

这里不再介绍java的类加载机制,只谈关于双亲委派在理解上的坑。

1. 双亲委派并不是要委派给两个 而是只委派给parent,这是翻译时带来的理解上的困难,个人认为翻译成祖先委派更加合理,因为委派是一级一级往上传递的。

2. 模型只是一个想法,在代码上体现为把父classloader传递给新建的classeloader,在新建的classloader中先调用父loader,不成功再自己load。其实具体写代码的时候这个传递的父classloader可以是你能获取到的任意的classloader,不一定就是当前类的classloader。

3. 如果如2中所述传递的不是当前类的classloader,就是破坏了双亲委派模型的。当然这种破坏一般情况下还是会使用的到祖先classloader。

获取到可用的classloader:

this.getClass().getClassLoader()   

this.getClass().getClass().getClassLoader()     //当然这个输出是null

Thread.currentThread().getContextClassLoader()

4.这几个方法最后一个最为特殊,网传这种方法破坏了双亲委派模型,而且使用范围比较广,其实破坏两个字只是一种概念上的违背,跟实际的代码没有任何关系,并不是某一个classloader在加载类的时候不先通过祖先加载类了,而是在使用ContextClassLoader时可以通过当前类的类加载器的子孙classloader加载类。为什么?因为这个是可以设置的,线程启动的时候可以设置为任意的classloader,跟线程中执行用到的类的类加载器没有任何关系。同理也可以在方法的入参上设置在方法内使用的类加载器,也破坏了双亲委派模型。

相关文章

  • java双亲委派模型及其破坏

    这里不再介绍java的类加载机制,只谈关于双亲委派在理解上的坑。 1. 双亲委派并不是要委派给两个 而是只委派给p...

  • 聊聊JDBC是如何破坏双亲委派模型的

    资源来源《深入理解Java虚拟机》 双亲委派模型的第一次“被破坏”其实发生在双亲委派模型出现之前--即JDK1.2...

  • 虚拟机类加载机制【破坏双亲委派模型】

    到Java模块化出现为止,双亲委派模型主要出现过3次较大规模“被破坏”的情况。 第一次“被破坏” 发生在双亲委派模...

  • Tomcat类载入器

    大家都知道,Java的类加载机制是双亲委派模型,那么什么是双亲委派模型呢?我们这里简要的说一下,双亲委派模型...

  • java类加载破坏双亲委派模型

    前面java类加载器与双亲委派模型中提到Java采用个双亲委派的方式来完成类加载,但是双亲委派模型并不是一个强制的...

  • 破坏双亲委派模型

    1.第一次破坏 由于双亲委派模型是在JDK1.2之后才被引入的,而类加载器和抽象类java.lang.ClassL...

  • SPI的ClassLoader问题

    问题 为什么说spi服务机制破坏了双亲委派模型? 双亲委派机制 启动类加载器(Bootstrap ClassLoa...

  • 破坏双亲委派机制的那些事

    前言 今天重读《深入理解Java虚拟》这本书,读到破坏双亲委派机制这一小节,其中有一段话,如下 双亲委派模型的第二...

  • JVM类加载过程详细分析

    双亲委派加载模型 为什么需要双亲委派加载模型 主要是为了安全,避免用户恶意加载破坏JVM正常运行的字节码文件,比如...

  • sandBox源码分析之ClassLoader

    提起classLoader,就不由自主想起了java classLoader的双亲委派模型,那么到底什么是双亲委派...

网友评论

      本文标题:java双亲委派模型及其破坏

      本文链接:https://www.haomeiwen.com/subject/djtepqtx.html