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

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

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

      

            类加载器双亲模型

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

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

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

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

    参考文献

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

  • 相关阅读:
    webpack3-loader和plugin的概念理解
    即将发布的ionic4有哪些激动人心的新特性
    使用腾讯tslint-config-alloy轻松搞定ionic项目中TSLint配置
    ionic2+ 中强制使安卓用ios样式的方法
    最新动态: 开源项目 ionic3-awesome — 实现fullScreenVideo
    c#开发windows 服务
    搭建NHibernate3.2+CodeFirst映射框架
    WCF
    MVC全局异常处理
    两只技术小白把初创电商卖了百万美元,现在他们决定把秘诀告诉你
  • 原文地址:https://www.cnblogs.com/chump-zwl/p/7347246.html
Copyright © 2011-2022 走看看