Java常见面试题:ClassLoader加载

简介: ClassLoader是一个类加载器,在Java里面类加载器并不只有一个,我们自己所编写的类加载器往往都去继承ClassLoader,所以自己的加载器是最后一次执行的。

ClassLoader是一个类加载器,在Java里面类加载器并不只有一个,我们自己所编写的类加载器往往都去继承ClassLoader,所以自己的加载器是最后一次执行的。

image.png

所有的Java程序类加载器一共分为两套类加载器:双亲加载;

(1)系统中的类都会由一个系统内部最高的类加载器负责加载,如果启动的时候要加载的系统类太多了,那么一定会造成启动变慢,所以JDK1.9才提出了一个模块化设计;

(2)如果用户自己定义的类,会使用其它的类加载器(ExtClassLoader、AppClassLoader、自己定义的的类加载器),这样可以避免系统安全问题。

什么是系统安全问题?

比如在Java里面有一个java.lang.string,如果你现在定义了完全一样的java.lang.string类,那么最终所带来的问题就有可能造成安全隐患,所以JDK在设计的时候为了防止这种问题的出现,采用了双亲加载机制,以保证系统安全。

同时使用自定义的类加载器还有一个好处,可以由用户自己来定义类文件的来源,默认情况下的类加载器(99%是够用的)都是通过ClassPath加载的,但是使用了自定义的加载器可以通过远程或文件进行加载。

更多专业知识,面试技巧就在面试一点通,持续更新中……
感谢浏览~
本内容来源于阿里云大学-Java面试技巧

相关文章
|
11天前
|
安全 架构师 Java
Java大厂面试高频:Collection 和 Collections 到底咋回答?
Java中的`Collection`和`Collections`是两个容易混淆的概念。`Collection`是集合框架的根接口,定义了集合的基本操作方法,如添加、删除等;而`Collections`是一个工具类,提供了操作集合的静态方法,如排序、查找、同步化等。简单来说,`Collection`关注数据结构,`Collections`则提供功能增强。通过小王的面试经历,我们可以更好地理解这两者的区别及其在实际开发中的应用。希望这篇文章能帮助你掌握这个经典面试题。
30 4
|
11天前
|
监控 Dubbo Java
Java Dubbo 面试题
Java Dubbo相关基础面试题
|
11天前
|
SQL Java 数据库连接
Java MyBatis 面试题
Java MyBatis相关基础面试题
|
11天前
|
存储 监控 算法
Java JVM 面试题
Java JVM(虚拟机)相关基础面试题
|
11天前
|
SQL 监控 druid
Java Druid 面试题
Java Druid 连接池相关基础面试题
|
11天前
|
缓存 安全 算法
Java 多线程 面试题
Java 多线程 相关基础面试题
|
1月前
|
Java
Java社招面试题:& 和 && 的区别,HR的套路险些让我翻车!
今日分享的主题是如何区分&和&&的区别,提高自身面试的能力。主要分为以下四部分。 1、自我面试经历 2、&amp和&amp&amp的不同之处 3、&对&&的不同用回答逻辑解释 4、彩蛋
|
存储 Java
java的各种加载和初始化的详细过程
一、什么时候加载和初始化 1、类什么时候加载 类的加载是通过类加载器(Classloader)完成的,它既可以是饿汉式[eagerly load](只要有其它类引用了它就加载)加载类,也可以是懒加载[lazy load](等到类初始化发生的时候才加载)。
1982 0
|
15天前
|
监控 Java
java异步判断线程池所有任务是否执行完
通过上述步骤,您可以在Java中实现异步判断线程池所有任务是否执行完毕。这种方法使用了 `CompletionService`来监控任务的完成情况,并通过一个独立线程异步检查所有任务的执行状态。这种设计不仅简洁高效,还能确保在大量任务处理时程序的稳定性和可维护性。希望本文能为您的开发工作提供实用的指导和帮助。
72 17
|
26天前
|
Java
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
Java—多线程实现生产消费者

热门文章

最新文章