java 双亲委派机制

来自知乎的双亲委派讲解,简单记录下:

Java 面试题:聊下什么是双亲委派机制 - 知乎我的文章专栏目录首先,要知道 java 有哪些类加载器,JVM 提供了3种类加载器 启动类加载器:负责加载 Java_HOME/lib 目录中的类库 扩展类加载器:负责加载 Java_HOME/lib/ext 目录中的类库 应用程序类加载器:负责…https://zhuanlan.zhihu.com/p/367609494

1.java类加载器类型:

  • 启动类加载器:负责加载 java_home/lib 目录中的类库
  • 扩展类加载器:负责加载 java_home/lib/ext 目录中的类库
  • 应用程序类加载器:负责加载用户路径(classpath)上的类库

除了上述3种类加载器,我们也可以通过继承 java.lang.ClassLoader 实现自定义的类加载器

这些类加载器的关系如下:

         既然有这么多的类加载器,加载一个类时使用哪个类加载器呢?如果不同的类加载器里有同名的类,以哪个类为准,如何避免类名冲突?双亲委派机制就是为了解决这些问题。

        双亲委派机制是指一个类在收到类加载请求后不会尝试自己加载这个类,而是把该类加载请求向上委派给其父类加载器去完成,其父类加载器在接收到该类加载请求后又会将其委派给自己的父类,以此类推,这样所有的类加载请求都被向上委派到启动类加载器中。若父类加载器在接收到类加载请求后发现自己也无法加载该类(通常原因是该类的Class文件在父类的类加载路径中不存在),则父类会将该信息反馈给子类并向下委派子类加载器加载该类,直到该类被成功加载,若找不到该类,则JVM会抛出ClassNotFoud异常。

加载流程如下:

 

知识扩展:

我竟然被“双亲委派”给虐了 - 知乎最近一段时间,我在面试的过程中,很喜欢问双亲委派的一些问题,因为我发现这个问题真的可以帮助我全方位的了解一个候选人。 记得前几天一次面试过程中,我和一位候选人聊到了JVM的类加载机制的问题,他谈到了双亲…https://zhuanlan.zhihu.com/p/343563937

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值