java.lang.Thread,包含了 public ClassLoader
getContextClassLoader()方法,这一方法返回针对一具体线程的上下文环境
类加载器。此类加载器由线程的创建者提供,以供此线程中运 行的代码在需要
加载类或资源时使用。如果此加载器未被建立,缺省是其父线程的上下文类加
载器。原始的类加载器一般由读取应用程序的类加载器建立。
类加载器如何工作?
除了引导类加载器,所有的类加载器都有一个父类加载器,不仅如此,所有的
类加载器也都是 java.lang.ClassLoader 类型。以上两种类加载器是不同的,
而且对于开发者自订制的类加载器的正常运行也至关重要。最重要的方面是正
确 设置父类加载器。任何类加载器,其父类加载器是加载该类加载器的类加载
器实例。(记住,类加载器本身也是一个类!)
使用 loadClass()方法可以从类加载器中获得该类。我们可以通过
java.lang.ClassLoader 的源代码来了解该方法工作的细节,如下:
protected synchronized Class<?> loadClass (String name, boolean
resolve) throws ClassNotFoundException
{
// First check if the class is already loaded
Class c = &ndLoadedClass(name);
if (c == null)
{
try
{
if (parent != null)
{
c = parent.loadClass(name, false);
} else {
c = &ndBootstrapClass0(name);
}
} catch (ClassNotFoundException e) {
// If still not found, then invoke // &ndClass to &nd the class.
c = &ndClass(name);
}
}
if (resolve)
{
resolveClass(c);
}
return c;
}
我们可以使用 ClassLoader 的两种构造方法来设置父类加载器: public class
MyClassLoader extends ClassLoader