小白秒懂什么是双亲委派模型

小白秒懂什么是双亲委派模型

在说双亲委派模型前,我们需要先了解类加载器:
类加载器:JVM只会加载二进制文件,类加载器的作用就是将字节码文件加载至JVM中。

类加载器有四种:

  • BootStrap ClassLoader:启动类加载器,C++语言编写 JAVA_HOME/jre/lib目录下。
  • ExtClassLoader:扩展类加载器,JAVA_HOME/jre/lib/ext目录下。
  • AppClassLoader:应用类加载器,加载我们自己写的Java类。
  • CustomizeClassLoader:自定义加载器。

在这里插入图片描述

双亲委派机制:在尝试加载某一个类的时候,类加载器之间会尝试让自己的上级加载器进行加载,如果上级加载器还有上级,则继续委托上级尝试加载。如果上级加载器无法加载这个类,则让它的下级尝试加载。

那双亲委派机制的作用是什么那?

  1. 通过这种机制,可以确保一个类不被重复加载,当父类加载器已经加载了这个类,则无需再次重复加载。
  2. 防止类库API被修改。

最重要的就是防止类库API被修改,看下面实例代码:

public class String {
	public static void main(String[] args){   
		//执行就会报错,因为双亲委派机制会让这个类在BootStrap ClassLoader启动类加载器加载
		//在尝试加载时,发现jre下有相同名字的类文件,不进行加载,并报错,做到了防止类库API被修改的作用
	}
}

但其实,双亲委派机制是可以被打破的。
打破方法就是:去自定义一个类加载器,并继承ClassLoader类,重写其中的loadClass()方法。Tomcat就是利用这种方式,做到了打破双亲委派机制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值