双亲委派
先去App的缓存中去找 有么有 当前的类的 ClassLoaded 没有去上面找 一次循环
先向上找 在向下委托 在不到就报 异常ClassNotFoundException
为什么会有双亲委派
就是为了安全
举个例子
自定义一个类加载器 专门去加载 java.lang.String
如果写了一个String来存取用户密码,然后在给自己发送一个邮件,这样以来所有人的密码都会发到我的邮箱。是不是就不安全。
执行流程:专门去加载 java.lang.String 自己的classLoader 找到自己的 Class 字节码。这样他就不会向上委派了。
/**
* 功能描述:双亲委派
*src/main/java/com/song/boot/springstudy/jvm/Parents.java
* @author Songxianyang
* @date 2022-08-17 22:29
*/
public class Parents {
public static void main(String[] args) throws ClassNotFoundException {
Class<?> aClass = Parents.class.getClassLoader().loadClass("com.song.boot.springstudy.entity.UserEntity");
System.out.println(aClass.getClassLoader());
System.out.println(aClass.getDeclaredFields().length);
System.out.println(String.class.getClassLoader());
//System.out.println(System.);
System.out.println(Parents.class.getClassLoader());
System.out.println(Parents.class.getClassLoader().getParent().getParent());
}
}
Java线程内存模型