https://blog.csdn.net/weixin_37766296/article/details/80545283
https://www.cnblogs.com/wangwudi/p/12327942.html
类的加载顺序
ClassLoader中默认的加载顺序:先查找是否已经加载,如果没有,调用parent的loadClass。如果所有父加载器也不能加载,调用本加载器的findClass加载。代码如下截图
类的并发加载
类加载器如果要支持类的并发加载,则需要注册自己支持并发加载,在ClassLoader中实现并发加载,getClassLoadingLock会在支持并发加载的情况下为每个类返回单独的锁,如果不支持并发加载,择返回自己(loader对象)最为锁。
自定义加载器:
自定义加载器,如果要自己实现对某些类的加载,应该重写LoadClass函数,遇到需要自己加载的类,需要读取字节码之后,使用ClassLoader.defineClass等函数实现。
一个.class文件被不同的加载器加载到内存后,生成了多个Class对象。一个Class对象由class的全限定名和加载器唯一确定。不同加载器加载的Class生成的对象,属于不同的类,不能相互转换。
在一个函数中创建对象而引起的新的类的加载,优先使用这个类的classloader作为新类的加载器。所以不同类加载器加载的类生成的对象之间相互交互时,需要比较注意,出现如下错误时,应该就是不同类加载器的对象之间的转换造成。
标签:java,自定义,对象,ClassLoader,并发,过程,Class,加载 From: https://www.cnblogs.com/wwwhhhqqq/p/16638988.html