当前位置: 首页 > 面试题库 >

Java线程的上下文类加载器和普通类加载器之间的区别

吴浩博
2023-03-14
问题内容

线程的上下文类加载器和普通类加载器有什么区别?

也就是说,如果Thread.currentThread().getContextClassLoader()getClass().getClassLoader()返回不同的类加载器对象,将使用哪一个?


问题答案:

每个类将使用其自己的类加载器来加载其他类。所以,如果ClassA.class引用ClassB.classClassB需要上的类加载器的类路径ClassA,或者它的父母。

线程上下文类加载器是当前线程的当前类加载器。可以从中的类创建对象ClassLoaderC,然后将其传递给拥有的线程ClassLoaderD。在这种情况下,Thread.currentThread().getContextClassLoader()如果对象要加载其自己的类加载器上不可用的资源,则需要直接使用。



 类似资料:
  • 问题内容: 我是Java的新手,刚开始弄清类加载器的概念。现在,关于线程上下文类加载器的使用,log4j出现了一些问题。 我收到以下错误: 我的应用程序大致以这种方式工作:在初始化URLClassLoader#1时,它会构建并加载一些类,这些类使用log4j。稍后在URLClassLoader#2上进行构造(其父类为URLClassLoader#1)并加载更多类,这些类也使用log4j。当使用UR

  • 主要内容:1.类加载过程,2.类加载时机,3.类加载器,4.类加载机制:当程序主动使用某个类时,如果该类还未被加载到内存中,则JVM会通过加载、连接、初始化3个步骤来对该类进行初始化。如果没有意外,JVM将会连续完成3个步骤,所以有时也把这个3个步骤统称为类加载或类初始化。 1.类加载过程 1.1加载 加载指的是将类的class文件读入到内存,并为之创建一个java.lang.Class对象,也就是说,当程序中使用任何类时,系统都会为之建立一个java.lang.Cl

  • 我试图在程序中加载一个jar文件来调用不同的方法。我有一个类来完成这项工作,但是该类使用加载jar文件,它依赖于系统类加载程序,因此,例如,如果加载的jar执行它完成整个应用程序的执行,终止当前运行的Java虚拟机。我的意图是,如果加载的jar最后一次这样做,它只完成jar,而不是整个应用程序。此外,我希望能够关闭jar,以便在需要时可以稍后重新启动它。我使用以下代码从jar实例化所需的类,并从我

  • 框架中所有的类都是通过类加载器(ClassLoader)加载的,通过Loader我们可以实现类的统一管理。下面我们一起来看看Loader提供了哪些加载方法: 1. Loader::import 加载一个类或者加载一个包 方法原型 import( $classPath, $type = IMPORT_APP, $extension=EXT_PHP ) 参数名称 参数说明 $classPath 文件的

  • 加载器,顾名思义,是用于加载元素的,加载的元素可以是库(类),视图文件 , 驱动器 ,辅助函数 , 模型 或其他你自己的文件。 注解 该类由系统自动加载,你无需手工加载。 应用程序"包" 包的视图文件 类参考 应用程序"包" 应用程序包(Package)可以很便捷的将你的应用部署在一个独立的目录中, 以实现自己整套的类库,模型,辅助函数,配置,文件和语言包。 建议将这些应用程序包放置在 appli

  • 如果我有一个内部类声明,例如: 其次是: A$B内部类也会加载吗?如果B内部类没有被声明为“静态”呢?