类加载器&双亲委派机制

目录

类加载器

双亲委派机制

什么是双亲委派机制

类加载器执行的流程

举例


 

类加载器

 

上图打印了三个类加载器。

第一个是应用程序加载器

第二个是扩展类加载器

第三个是启动类(根)类加载器

 

 

双亲委派机制

 

什么是双亲委派机制

双亲委派机制是指当一个类加载器收到一个类加载请求时,该类加载器首先会把请求委派给父类加载器。每个类加载器都是如此,只有在父类加载器在自己的搜索范围内找不到指定类时,子类加载器才会尝试自己去加载。

 

类加载器执行的流程

上图中的注释是什么意思?讲完双亲委派机制就明白了~ 

.class文件会通过类加载器,类加载器收到类加载的请求后,将这个请求向上委托给父类加载器去完成,父类加载器不会去执行,它会一直向上委托最终到根加载器。如果根加载器能够加载这个类(即rt.jar)包中有这个类,该类就会被根加载器加载,否则抛出异常,通知子类加载器进行加载。

根加载器加载不了有两个原因。一是rt.jar包中没有加载的main方法,二是方法是用比Java底层的语言C或C++写的,java程序获取不到

大部分我们自定义的类都是通过应用程序加载器加载的,但是如果应用程序加载器也加载不了,就会报Class Not Found~异常

BOOT==>EXC==>APP

 

举例

1.无法被类加载器解析

报错如下 

原因是String类在根加载器中被找到,它会执行rt.jar包中String类,不会执行我们自定义的main方法

 

2.大多数自定义的类

程序并未报错,.class文件依次检查根加载器、扩展类加载器、应用程序加载器,最后从应用程序加载器加载.class文件,输出结果。

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读