双亲委派机制流程
当Application ClassLoader 收到一个类加载请求时,他首先不会自己去尝试加载这个类,而是将这个请求委派给父类加载器Extension ClassLoader去完成。
当Extension ClassLoader收到一个类加载请求时,他首先也不会自己去尝试加载这个类,而是将请求委派给父类加载器Bootstrap ClassLoader去完成。
如果Bootstrap ClassLoader加载失败(在\lib中未找到所需类),就会让Extension ClassLoader尝试加载。
如果Extension ClassLoader也加载失败,就会使用Application ClassLoader加载。
如果Application ClassLoader也加载失败,就会使用自定义加载器去尝试加载。
如果均加载失败,就会抛出ClassNotFoundException异常。
双亲委派机制作用
保证了java的稳定运行,避免了类的重复加载;保证java核心API不被篡改,提高了安全性(如果有人想篡改String类,类加载器优先让启动加载器加载,发现已经加载过了,就不会再加载)