在了解双亲委派机制之前,你应当知道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核心代码的污染

最新文章

  1. JAVA发展史
  2. Html总结及日志目录
  3. RAC 相关概念解释
  4. java net编程
  5. unreal3之FName及潜在bug
  6. 模拟 ZOJ 3878 Convert QWERTY to Dvorak
  7. asm/aam links
  8. Confluence 5.4实现与JIRA前所未有的集成
  9. DROP--删除表
  10. way/XMPP
  11. 软体project(四)——一生
  12. HTML <td> 标签的 colspan 属性
  13. 理解Python闭包概念
  14. JavaBean找到项目下的文件这里是\WEB-INF\classes\下面的属性文件
  15. 挑选队友 (生成函数 + FFT + 分治)
  16. ReentrantLock(重入锁)的使用
  17. 关于tomcat性能优化
  18. tls 双向认证 client端代码例子
  19. 基于RBAC权限验证, 中间价middleware实现, views 登录视图代码
  20. s7-200 PID控位

热门文章

  1. 45道CSS基础面试题(附答案)
  2. ELK搭建实时日志分析平台
  3. MySQL 相关规约(v1.0)
  4. html实现打印预览效果
  5. springboot 配置mybatis打印sql
  6. VirtualBox 安装摄像头驱动
  7. 三天讲透SpringBoot-初识基础使用
  8. 【JavaScript】 控制自适应高度
  9. 超详细!! sql server 同步数据库 发布 订阅 跨网段 无公网ip 常见问题
  10. 树莓派(4B)Linux + .Net Core嵌入式-初始化环境(一)