您通过其创建的匿名类
new Thread("test") { ...}具有对封闭实例的隐式引用。将使用封闭类的ClassLoader加载此匿名类中的类文字。为了使该测试有效,您应该提取一个适当的Runnable实现,并使用所需的ClassLoader进行反射加载。然后将其显式传递给线程。就像是:
public final class MyRunnable implements Runnable { public void run() { System.out.println("running..."); // etc... } } final Class runnableClass = classLoader.loadClass("classloader.MyRunnable"); final Thread thread = new Thread((Runnable) runableClass.newInstance()); thread.setContextClassLoader(classLoader); // this is unnecessary unless you you are using libraries that themselves call .getContextClassLoader() thread.start();


