码迷,mamicode.com
首页 > 编程语言 > 详细

【java基础】- java双亲委派机制

时间:2019-10-21 00:06:01      阅读:29      评论:0      收藏:0      [点我收藏+]

标签:mamicode   优点   int   重复   结果   trap   错误   rac   png   

在了解双亲委派机制之前,你应当知道classloader(如果不了解,可以现在去恶补一下哈)

四种classloader

技术图片

  1. 虚拟机自带
  • 引导类加载器(Bootstrap ClassLoader)
  • 扩展类加载器(Extension ClassLoader)
  • 系统类加载器(Application ClassLoader)
  1. 用户自定义
  • 用户自定义类加载器,需要继java.lang.ClassLoader
package java.lang;

public abstract class ClassLoader {
    ...
}

双亲委派机制

当类加载器加载某个类时,自己先不会加载,而是委托给父类加载器,如果父类加载向上还有父类加载器那么依次向上委托,直到最顶层加载器。如果该加载器能够加载该类,那么就由该类加载加载,如果不能则由子类加载加载。如果所有类加载都不能加载则会抛出异常

双亲委派机制的优点

  1. 加载类带有优先级关系,通过这种关系可以避免重复加载
  2. 避免源代码被污染
    比如: 用户自定了java.lang.String类
package java.lang;
class String {
    public static void main(String[] args) {
        System.out.println("........")
    }
}

用户期望的是能够加载自定义的java.lang.String,但实际上的结果:

错误: 在类 java.lang.String 中找不到 main 方法, 请将 main 方法定义为:
   public static void main(String[] args)
否则 JavaFX 应用程序类必须扩展javafx.application.Application

没有找到main方法???那么证明jvm没有加载自定义String,而是找到了java core中的java.lang.String.
这样就防止了对java核心代码的污染

技术图片

【java基础】- java双亲委派机制

标签:mamicode   优点   int   重复   结果   trap   错误   rac   png   

原文地址:https://www.cnblogs.com/amberbar/p/11711024.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有 京ICP备13008772号-2
迷上了代码!