双亲委派模型

从JAVA虚拟机的角度来说,只有两种类型的类加载器:启动类加载器,由C++实现,是虚拟机自身的一部分;全部其余的类加载器,由java语言实现,独立于虚拟机外部,而且所有继承自java.lang.ClassLoader。java

从java开发人员的角度来看,通常是由三种类加载器线程

BootStrap ClassLoader设计

Exetension ClassLoader继承

Application ClassLoader开发

这里列加载器之间的父子关系通常不是继承关系,而是以组合关系来复用父加载器的代码。虚拟机

 

破坏双亲委派模型io

第一次被破坏发生在双亲委派模型出现以前,对已经存在的用户自定义类加载器的实现代码,java设计者引入双亲委派时不得不作出一些妥协。在java.lang.ClassLoader添加了一个新的protected findClass()方法,去重写loadClass()方法。基础

第二次是由自身的缺陷所致使的,双亲委派很好地解决了各个类加载器的基础类的同一问题,可是若是出现基础类又要调用回用户的代码时就要破坏该模型。引入了线程上下文类加载器。程序

第三次是因为用户对程序动态性的追求而致使的。方法

相关文章
相关标签/搜索