双亲委派模型的工作过程是:如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加载器都是如此,因此所有的加载请求最终都应该传送到最顶层的启动类加载器中,只有当上一层类加载器反馈自己无法完成这个加载请求(它的搜索范围中没有找到这个类)时,下一层类加载器才会尝试自己去加载;
JDK为什么要设计双亲委派模型,有什么好处?
1、确保安全,避免Java核心类库被修改;
2、避免重复加载;
3、保证类的唯一性;
如果你写一个java.lang.String的类去运行,发现会抛出如下异常;
可以打破JVM双亲委派模型吗?如何打破JVM双亲委派模型?
可以;
想要打破这种模型,那么就自定义一个类加载器,重写其中的loadClass方法,使其不进行双亲委派即可;
补充:
https://zhuanlan.zhihu.com/p/269214344