双亲委派模型

本文介绍了Java中类加载器的工作原理,包括启动类加载器、扩展类加载器和应用程序类加载器。探讨了类加载器之间的关系并非继承而是组合,并讨论了双亲委派模型及其被破坏的情况。

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

从java开发人员的角度来看,一般是由三种类加载器

BootStrap ClassLoader

Exetension ClassLoader

Application ClassLoader

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

 

破坏双亲委派模型

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

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

第三次是由于用户对程序动态性的追求而导致的。

转载于:https://my.oschina.net/u/2402401/blog/1630352

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值