ClassLoader
2023-04-05 23:36:50 0 举报
AI智能生成
登录查看完整内容
JVM双亲委派机制源码解析
作者其他创作
大纲/内容
//首先检查该类是否已经被加载过
Classc=findLoadedClass(name);
//如果该类还没有被加载过,则委托给父类加载器进行加载
try{
if(parent!=null){
}catch(ClassNotFoundExceptione){
}
//如果父类加载器无法加载该类,则调用自身的findClass方法进行加载
c=findClass(name);
if(c==null){
//如果需要解析类,则调用resolveClass方法进行解析
resolveClass(c);
if(resolve){
returnc;
synchronized(getClassLoadingLock(name))
thrownewClassNotFoundException(name);
protectedClassfindClass(Stringname)throwsClassNotFoundException
returnnull;
protectedClassfindLoadedClass(Stringname)
lock=parallelLockMap.get(className);
lock=newObject();
if(lock==null){
if(parallelLockMap!=null){
returnlock;
Objectlock=this;
protectedObjectgetClassLoadingLock(StringclassName)
java.lang.ClassLoader
//如果没有指定类加载器,则使用系统类加载器进行加载
loader=ClassLoader.getSystemClassLoader();
}catch(SecurityExceptionse){
if(loader==null){
//使用指定的类加载器进行加载
c=loader.loadClass(name);
if(loader!=null){
//如果无法使用指定的类加载器进行加载,则使用当前类的类加载器进行加载
//如果需要初始化类,则调用initialize方法进行初始化
initialize(c);
if(initialize){
Classc=null;
java.lang.Class
java.security.SecureClassLoader
ClassLoader双亲委派机制源码分析
0 条评论
回复 删除
下一页