zoukankan      html  css  js  c++  java
  • 双亲委派模型

      从Java虚拟机的角度来讲,只存在两种不同的类加载器:一种是启动类加载器(Bootstrap ClassLoader),这个类加载器使用c++语言实现,是虚拟机自身的一部分;另一种就是所有其他的类加载器,这些加载器都是由Java语言实现,独立与虚拟机外部,并且全部都继承自java.lang.ClassLoader。

      从开发人员角度来看,类加载器还可划分得更细致一些,绝大部分Java程序都会使用到以下3种系统提供的类加载器。启动类加载器,扩展类加载器,应用程序类加载器。我们的应用程序都是由这3种类加载器互相配合进行加载的,如果没有必要,还可以加入自己定义的类加载器。

      

            类加载器双亲模型

      双亲委派模型要求除了顶层的启动类加载器外,其余的类加载器都应当有自己的父类加载器。

      双亲委派模型工作过程:如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把请求委派给父类加载器去完成,每一个层次的类加载器都是如此,因此所有的加载请求最终都应该传送到顶层的启动类加载器中,只有当父类加载器反馈自己无法完成这个加载请求时,子加载器才会尝试自己去加载。

      优点:Java类随着它的类加载器一起具备了一种带有优先级的层次关系;保证Java程序的稳定运作。

      实现:先检查是否已经被加载过,若没有加载则调用父加载器的loadClass()方法,若父加载器为空则默认使用启动类加载器作为父加载器。如果父类加载失败,抛出ClassNotFoundException异常后,再调用自己的findClass()方法进行加载。

    参考文献

    《深入理解Java虚拟机》  机械工业出版社  周志明著

  • 相关阅读:
    大数据概述
    语法分析-代码
    语法分析-C语言程序
    Hadoop综合大作业
    hive基本操作与应用
    理解MapReduce计算构架
    熟悉HBase基本操作
    爬虫大作业
    熟悉常用的HDFS操作
    数据结构化与保存
  • 原文地址:https://www.cnblogs.com/chump-zwl/p/7347246.html
Copyright © 2011-2022 走看看