双亲委派和类加载器

本文详细介绍了Java中的四种类加载器:启动类加载器、扩展类加载器、应用类加载器和自定义类加载器,以及它们之间的继承关系。重点讨论了双亲委派机制,描述了类加载的过程,从应用类加载器开始,逐级向上委托,直至找到合适的类加载器完成加载。这个机制确保了系统类的唯一性,避免了类的重复加载和冲突。
摘要由CSDN通过智能技术生成

java中的类加载器总共分为4种,分别为启动类加载器(bootstraptClassLoader),扩展类加载器(ExtClassLoader),应用类加载器(AppClassLoder),自定义类加载器(CustomerClassLoader),

他们分别继承了ClassLoader类,这四个类的关系为,启动类加载器是继续C++实现的,他是顶级类加载器,扩展类加载器的父加载器为null,应为启动类的加载器是基于C++实现的,所以扩展类找不到对应的关系,应用类加载器的父加载器为扩展类加载器,所有的自定义类加载器的父加载器为应用类加载器,应为所有的类记载器都继承于ClassLoader。ClassLoader的默认类加载器就是应用类加载器。

 

双亲委派机制

首先加载一个类会从应用程序类加载器开始加载,应用类加载器会从自己已经加载的类中去查找,是否加载过此类,如果已经加载就直接返回该类,如果没有会委托自己的父加载器去加载,同样,父加载器也会在自己加载的类的集合中去查找是否加载过此类,如果有直接范围加载的类,如果没有,就会继续委托父加载器去加载,如果父加载器为空,就会委托启动类加载器去加载,,同样启动类加载器如果加载过此资源文件则直接返回该类,如果没有,就调用findClass方法去加载,但是启动类加载器所加载的资源都是jdk的lib目录的资源文件,如rt.jar等,如果需要加载的类不在此目录就会返回空,接着调用扩展类的findClass方法,去加载jdk下面的ext目录下面的jar文件,如果加载不到就返回空,接着调用应用类加载器的findClass方法,加载classPath路径下面的所有资源。加载到就返回此类的信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值