双亲委派机制其主要作用有两点
(1)防止重复加载同一个类,保证了数据的安全性
(2)保证了核心的类不会被篡改,即使篡改了也不会是同一个类对象,从而保证了类的安全性
我们的java程序在运行时,所有的类都是经过类加载器(ClassLoader)加载至JVM中去执行的,java为我们提供了三种类加载器
(1)启动类加载器 BootStrap ClassLoader(负责加载java目录下的lib核心类(java.*))
(2)扩展类加载器 Extension ClassLoader(负责加载java目录下的jre\lib\ext扩展类)
(3) Application ClassLoader(负责加载ClassPath环境变量下指定的java代码)
还有一种就是我们可以进行自定义加载器(根据自己的需求进行编写需要加载的类)
加载的级别依次最高是启动类加载器(BootStrap ClassLoader)最低为自定义加载器
双亲委派的机制(先由父类加载器进行加载 否则由子类加载器进行加载)简单来说 一个类在加载过程中会先去询问父级加载器是否已经加载过,如果加载过则不再加载、否则就由自己来加载
总结:双亲委派机制并不是万能的,在某些的场景也需要进行打破双亲委派机制,例如Tomcat的类加载机制