线程上下文类加载器与普通类加载器
Java 提供了两种不同的类加载机制:线程上下文类加载器和普通类加载器类加载器。
线程的上下文类Loader
上下文类加载器是与每个线程关联的类加载器。当线程需要动态加载类时使用它,例如使用反射或反序列化时。默认情况下,上下文类加载器设置为加载线程主类的类加载器的父类加载器。
普通类加载器
普通类加载器是用于加载当前类的类的类加载器。它是使用 getClass().getClassLoader() 方法检索的。通常,普通类加载器与上下文类加载器相同,即它是加载主类的类加载器的父类加载器。
使用哪个类加载器?
当线程动态加载类时,它通常使用上下文类加载器。但是,如果线程的上下文类加载器与普通类加载器不同,则使用哪一个取决于上下文。
只有在特定情况下才能使用普通类加载器来代替上下文类加载器。例如,如果上下文类加载器为空,则使用普通类加载器。
推荐
一般情况下,建议使用普通类加载器(即、 getClass().getClassLoader()) 显式加载类时,即使上下文类加载器不同。显式类加载应始终使用执行加载的类的类加载器。
以上是线程上下文类加载器与普通类加载器:什么时候应该使用哪个?的详细内容。更多信息请关注PHP中文网其他相关文章!