类加载机制

3 篇文章 0 订阅

类加载机制

1    双亲委派机制

机制
核心是向上委派
加载一个类时,首先会通过类的全限定名判断类是否已经被加载,
被加载时,直接返回,
未被加载时,委托给父类加载器去加载,
重复相同的流程直至启动类加载器,
如果父类加载器所负责的加载路径中加载不到该类,则当前类加载器在自己的加载路径找该类。

局限性
无法做到不委派,或者向下委派

打破双亲委派
不委派
向下委派(SPI机制中的一部分)

实现打破双亲委派的方式
1)自定义类加载器
重写sun.applet.AppletClassLoader#loadClass()方法
或者重写java.lang.ClassLoader#findLoadedClass()方法

2)SPI(服务发现机制)+线程上下文类加载器
实现向下委派的使用场景分析:数据库驱动加载
java中提供数据库驱动java.sql.Driver接口以及驱动管理java.sql.DriverManager类,在rt.jar中,由启动类加载器负责加载,
而各个数据库厂商需要提供具体的实现,是由应用类加载器加载的,这个时候需要向下委派,通过SPI+线程上下文类加载器实现。在加载具体的数据库驱动时取线程上下文类加载器(默认为应用类加载器)进行加载。
其中SPI机制是通过java.util.ServiceLoader实现的。

2    全盘委托机制

当类加载器加载一个类时,会同时使用该类加载器加载这个类所依赖的其他类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值