双亲委派模型
双亲委派的工作过程
一个类加载器收到类加载的请求时,它不会马上加载该类,而是把这个请求委托给父加载器去完成,每一个层次的类加载器都是如此,因此所有的类加载请求都必须先通过启动类加载器尝试加载,只有当父加载器无法加载这个类时,才会把加载请求传递给它的子加载器去尝试加载,流程如下:
双亲委派模型的作用
使用双亲委派模型来组织类加载器之间的关系,一个显而易见的好处就是Java中的类随着它的加载器一起具备了一种带有优先级的层次关系。例如java.lang.Object
存放在rt.jar
当中,无论哪一层的类加载器需要加载Object
类,最终都是委派到启动类加载器进行加载,所以可以保证Object
类在程序的各种类加载器环境中是同一个类。