一.双亲委派机制的定义
每个Java类都有一个对应的类加载器,双亲委派机制是Java的默认类加载机制。在类加载的时候,系统会先判断当前类是否被加载过,已经加载的类会直接返回,否则才尝试加载。
在加载一个类之前,会先把请求委派给父类加载器处理,因此所有的请求最终会传送到顶层的启动类加载器BootstrapClassLoader,当父类加载器无法处理时,才由类自己来加载。当父类加载器为null时,会使用启动类加载器BootstrapClassLoader作为父类加载器。
二.双亲委派机制的作用(好处)
双亲委派机制保证了Java程序稳定运行,避免了类的重复加载(JVM区分不同的类不仅仅通过类名,相同的类文件被不同的类加载器加载产生的是两个不同的类)。
保证了Java的核心API不被篡改。
三.如果不想用双亲委派模型该怎么办?
自定义一个类加载器,继承ClassLoader。
不打破双亲委派机制,就重写其中的findClass()方法,无法被父类加载器加载的类最终会通过这个方法被加载。
打破双亲委派机制就重写ClassLoader中的loadClass()方法。