线程上下文类加载器分析与实现

Posted webor2006

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程上下文类加载器分析与实现相关的知识,希望对你有一定的参考价值。

在上一次【https://www.cnblogs.com/webor2006/p/9246850.html】分析源码中发现有两处设置线程上下文类加载器的代码,如下:

技术分享图片

技术分享图片

因为它是非常重要的东东,所以这次专门对它进行主题展开,主要的作用为了改变委托双亲模式在某些场景不太适用或者是无法满足需求的,下面先写一个简单的测试代码:

技术分享图片

那输出是啥呢?

技术分享图片

也就是说当前线程的上下文类加载器是应用类加载器,而第二输出null不足为奇,因为Thread是JDK中的系统类当然是由启动类加载器加载喽。

对于上面的例子先有一个初浅的认识既可,在正式介绍线程的上下文类加载器之前需要介绍一些理论性的东东,只有明白了它的背景这样才能更好的掌握它,具体如下:

  • 当前类加载器(Current ClassLoader):每一个类都会使用自己的类加载器(既加载自身的类加载器)来去加载其它类(指的是所依赖的类),

以上是关于线程上下文类加载器分析与实现的主要内容,如果未能解决你的问题,请参考以下文章

jvm原理(23)线程上下文类加载器实战分析与难点剖析

jvm原理(22)线程上下文类加载器本质剖析与实做&ServiceLoader在SPI中的重要作用分析

真正理解线程上下文类加载器(多案例分析)

《Java虚拟机原理图解》5. JVM类加载器机制与类加载过程

JVM深层系列「逆向ClassLoader加载机制」认识一下线程上下文类加载器实现

06-阿里面试题:Tomcat类加载设计 [线程上下文类加载器+破坏性双亲委派机制]