双亲委派机制了解一下

什么是类加载器?

类加载器是jre的一部分,负责动态将类添加到Java虚拟机。

类加载分类

1、启动类加载器 bootstrap classloader :加载jre/lib/rt.jar

2、扩展类加载器 extension classloader:加载jre/lib/ext/*.jar

3、应用程序类加载器 app classloader:加载classpath上指定的类库

双亲委派机制

双亲委派机制是指当一个类加载器收到一个类加载请求时,该类加载器首先会把请求委派给父类加载器。每个类加载器都是如此,只有在父类加载器在自己的搜索范围内找不到指定类时,子类加载器才会尝试自己去加载。

双亲委派模型工作工程:

1.当Application ClassLoader 收到一个类加载请求时,他首先不会自己去尝试加载这个类,而是将这个请求委派给父类加载器Extension ClassLoader去完成。  

2.当Extension ClassLoader收到一个类加载请求时,他首先也不会自己去尝试加载这个类,而是将请求委派给父类加载器Bootstrap ClassLoader去完成。  

 3.如果Bootstrap ClassLoader加载失败(在<JAVA_HOME>\lib中未找到所需类),就会让Extension ClassLoader尝试加载。  

 4.如果Extension ClassLoader也加载失败,就会使用Application ClassLoader加载。  

 5.如果Application ClassLoader也加载失败,就会使用自定义加载器去尝试加载。  

 6.如果均加载失败,就会抛出ClassNotFoundException异常。

问题一:能不能自己写个类,也叫java.lang.String

可以,但是因为双亲委派工作机制的存在,虚拟机还是会默认加载jre中的Java.lang.String。所以如果要想使用自己定义的string类,需要再写一个类加载器。

posted @ 2018-09-07 17:33  朝朝暮暮dx  阅读(688)  评论(0编辑  收藏  举报