java双亲委派机制

双亲委派机制的优点: 同样的类不会被重复加载。

一、概述:

类加载器:类加载器用于加载  .class字节码文件到内存中(并为每个 .class字节码文件生成  Class对象)。

二、四种类加载器介绍:

   2.1.启动类加载器(Bootstrap ClassLoader):  用于加载jdk的核心类类库中的类,具体加载( jdk/jre/lib)  jdk目录/jre子目录/lib子目录中的类(java官方类库) 、或sun. boot.class.path属性指定的 路径下的类(了解即可)。 还可以加载扩展类加载器应用程序类加载器。 但通常处于安全性考虑只允许其加载 java、sun、javax包及子包下的类(比如  java.lang.Math,    java.lang.String)。 

  2.2.扩展类加载器 Extension ClassLoader:

用于加载:  Java 语言编写,由 sun.misc.Launcher$ExtClassLoader实现。其继承了 java.lang.ClassLoader抽象类。 父加载器为启动类加载器(Bootstrap ClassLoader)。

用于加载Java的扩展类库,   jdk/jre/lib/ext目录中的 JAR 压缩文件和类。

2.3.应用程序类加载器  ApplicationClassLoader:

  Java 语言编写,由 sun.misc.Launcher$AppClassLoader 实现。其继承了 java.lang.ClassLoader抽象类。 父加载器为扩展类加载器。用于加载:自己编写的类、第三方库提供的类、一些其他的资源文件。是java开发的应用程序默认的类加载器,一般来说,Java 开发的应用程序中的类都是由它来完成加载。

注意:应用程序类加载器  ApplicationClassLoader也叫做系统类加载器, 因为是项目默认的类加载器。

2.4.自定义类加载器:

日常开发中,上述3种类加载器相互配合就几乎可以加载所有的类及相关资源。 但必要时,可以自定义类加载器,来定制类的加载方式。  

注意:  如果一个项目中用户没有创建并启动自定义类加载器,则本项目中就不涉及用户自定义类加载器

public class CustomClassLoader extends ClassLoader {
    //省略类自定义加载器的其他具体实现代码。

    public static void main(String[] args) {
        try {
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值