protected Class<?>loadClass(String name,boolean resolve)throws ClassNotFoundException
{
synchronized(getClassLoadingLock(name)){
// First, check if the class has already been loaded// 检查指定名称的类是否已经加载过
Class<?> c =findLoadedClass(name);if(c == null){
long t0 = System.nanoTime();try{
if(parent != null){
// 如果当前加载器父加载器不为空则委托父加载器加载该类
c = parent.loadClass(name,false);}else{
// 如果当前加载器父加载器为空则委托引导类加载器加载该类
c =findBootstrapClassOrNull(name);}}catch(ClassNotFoundException e){
// ClassNotFoundException thrown if class not found// from the non-null parent class loader}if(c == null){
// If still not found, then invoke findClass in order// to find the class.long t1 = System.nanoTime();// 都会调用URLClassLoader即当前类加载器的findClass方法在加载器的类路径里查找并加载该类
c =findClass(name);// this is the defining class loader; record the stats
sun.misc.PerfCounter.getParentDelegationTime().addTime(t1 - t0);
sun.misc.PerfCounter.getFindClassTime().addElapsedTimeFrom(t1);
sun.misc.PerfCounter.getFindClasses().increment();}}if(resolve){
// 不会执行resolveClass(c);}return c;}}