双亲委派机制的三个特性是什么?有什么作用?

TheDisguiser 2020-05-10 20:12:31 java常见问答 7009

经过上回的讲解,相信大家都已经对双亲委派机制有一定的了解了吧,那你们知道双亲委派机制都有哪些特性吗?下面就听我来介绍一下吧。

一、双亲委派机制是什么?

首先让我们先复习一下双亲委派机制的基本概念吧,双亲委派机制指当某一个列要加载一个特定类时,不是立刻由自己加载,而是把这个任务委托给父加载器完成,如果父加载器上还有父加载器,就再委托给爷爷,直到根类加载器,如果根类加载器加载不成功,流程就要往下返回给拓展加载器,一直往下。这中间只要有一个类加载器加载成功,就返回成功。

双亲委派机制的三个特性

二、双亲委派模型构成组件

1. 启动类加载器

引导类装入器是用本地代码实现的类装入器,它会负责将 /libwen下面的类库加载到内存中。引导类加载器由于涉及到虚拟机本地实现细节,程序员无法直接获取到启动类加载器的引用,所以不允许直接通过引用进行操作。

2. 扩展类加载器

扩展类加载器是由 Sun 的 ExtClassLoader实现的。它负责将< Java_Runtime_Home >/lib/ext 或者由系统变量 java.ext.dir 指定位置中的类库加载到内存中。程序员可以直接使用标准扩展类加载器。

3. 系统类类加载器

系统类加载器是由 Sun 的 AppClassLoader(sun.misc.Launcher$AppClassLoader)实现的。它负责将系统类路径(CLASSPATH)中指定的类库加载到内存中。程序员可以直接使用系统类加载器

4. 自定义类加载器

三、双亲委派模型工作过程

当一个类加载器收到了类加载的请求,它不会先自己去加载这个类,而是会把这个请求委派给父类加载器完成。每个类加载器都会这样,只有当父类加载器在自己搜索范围内找不到指定类ClassNotFoundException时,子加载器才会尝试自己去加载。

这就是所有内容了,有关java常见问答的更多内容请持续关注我们了解吧。

推荐阅读:

双亲委派机制可以被打破吗?模型可以被破坏吗?

双亲委派机制好处是什么?有什么好处?