Thread.currentThread().getContextClassLoader().loadClass(className)

编译器加载类要依靠classloader, 而classloader有3个级别,从高到低分别是BootClassLoader(名字可能不准确) , ExtClassLoader, AppClassLoader. 
这3个加载器分别对应着编译器去寻找类文件的优先级别和不同的路径:BootClassLoader对应jre/classes路径,是编译器最优先寻找class的地方 
ExtClassLoader对应jre/lib/ext路径,是编译器次优先寻找class的地方 
AppClassLoader对应当前路径,所以也是编译器默认找class的地方 
现在给你分析你的问题我想因为Thread.currentThread().getContextClassLoader().loadClass(className) 
是线程中的类加载器,直接调用起来效率最高,假设在这三个类加载器都找不到你的类,直接用Class.forname()映射 
,这样就要多消耗资源了,一个线程调用资源开销不大,那要是几百个并发呢。个人理解楼主参考一下

你可能感兴趣的:(Thread.currentThread().getContextClassLoader().loadClass(className))