线程的上下文类加载器和普通类加载器有什么区别?
也就是说,如果Thread.currentThread().getContextClassLoader()和getClass().getClassLoader()返回不同的类加载器对象,将使用哪一个?
Thread.currentThread().getContextClassLoader()
getClass().getClassLoader()
每个类将使用其自己的类加载器来加载其他类。所以,如果ClassA.class引用ClassB.class则ClassB需要上的类加载器的类路径ClassA,或者它的父母。
ClassA.class
ClassB.class
ClassB
ClassA
线程上下文类加载器是当前线程的当前类加载器。可以从中的类创建对象ClassLoaderC,然后将其传递给拥有的线程ClassLoaderD。在这种情况下,Thread.currentThread().getContextClassLoader()如果对象要加载其自己的类加载器上不可用的资源,则需要直接使用。
ClassLoaderC
ClassLoaderD