`

ContextClassLoader_面试题

阅读更多

今天我遇到的一个面试题为

Thread.currentThread().getContextClassLoader().loadClass(className);//不会调用类的static块代码

class.forName(className);//调用类的static块代码

package cn.hotbain;

import java.io.InputStream;

public class Echo2 {

	public static void main(String[] args)  throws Exception{
		//得到应用类加载器
		ClassLoader loader=Thread.currentThread().getContextClassLoader().getParent();
		System.out.println(loader);
		Thread.currentThread().getContextClassLoader().loadClass("cn.hotbain.Echo");
		Thread.currentThread().setContextClassLoader(loader.getParent());
		//forName()会造成类的初始化;
		//classLoader.loadClass("className");不会造成类的初始化
		ClassLoader clazzLoader=Class.forName("cn.hotbain.Echo").getClassLoader();
		System.out.println(clazzLoader);
		Thread.currentThread().getContextClassLoader().loadClass("cn.hotbain.Echo");
	}
	
	private static void test4() throws Exception{
		
	}	
	private static void test3() throws Exception{
		System.out.println("default thread class context  loader  is "+Thread.currentThread().getContextClassLoader().getClass().getName()
				);
						ClassLoader classLoader=ClassLoader.getSystemClassLoader().getParent();
						Thread.currentThread().setContextClassLoader(classLoader);
						System.out.println(Thread.currentThread().getContextClassLoader());
						test2();
	}
	private static void  test2() throws Exception{
		ClassLoader loader=Echo.class.getClassLoader();
		System.out.println(loader);
//如果是用类加载器加载resources的话,那么就会从指定的Loader的指定位置加载(例如:extLoader从ext加载resource)
		InputStream ins=loader.getResourceAsStream(".classpath");
		ins.close();
		new Thread(new Runnable() {
			
			@Override
			public void run() {
				System.out.println("当前线程启动的classLoader为"+Thread.currentThread().getContextClassLoader());
			}
		}).start();
	}
	
	private static void test1() throws Exception{
		//如果文件路径是以/开头时,那么就会从绝对路径下读取文件。否则就会以相对路径的方式查找
				InputStream  ins =Echo2.class.getResourceAsStream("/note.txt");
				System.out.println(ins);
				ins.close();
				
	}

}

 

在tomcat中每一个app都会对应一个加载器Loader1,但是其父加载器去都是同一个StandardClassLoader,当需要从tomcat的lib下分享共同的资源的时,需要将其放入到指定lib下。当需要在web-inf下访问资源时,需要将资源放到web-inf下

 

分享到:
评论

相关推荐

    java面试题(整理)

    ### Java面试题详解 #### 一、Java基础知识 1. **您看过哪些Java方面的书籍?** 这个问题旨在了解求职者对于Java学习的态度和深度。常见的Java学习书籍包括但不限于: - 《Java核心技术》 - 《Effective Java...

    值得收藏的2017年Java开发岗位面试题

    Java开发岗位面试题汇总 本文汇总了Java开发岗位常见的面试题,涵盖了Java基础、IO、Web、JVM、开源框架等多方面的知识点。这些问题可以帮助Java开发者更好地准备面试,提高自己的技术水平。 一、Java基础 1. ...

    大数据面试宝典

    内容涵盖了技术面试题、面试经验分享及资源推荐等方面,对于准备大数据领域面试的人来说具有很高的参考价值。 #### 二、面试题目解析 ##### 阿里四轮面试总结 **第一轮面试(电话)** 1. **自我介绍**:介绍自己...

    通信工程应届生求职简历.docx

    通信工程应届生求职简历.docx

    c++课程设计-产品入库管理操作系统+源代码

    c++课程设计-产品入库管理操作系统 此 C++ 课程设计的产品入库管理操作系统,可实现产品信息录入、修改、查询与统计等功能,助力高效精准管理产品入库。

    IMG_20250416_154837.jpg

    IMG_20250416_154837.jpg

    处理器知识-RISC-V-简单启动流程-教学演示用途-1744731373.zip

    处理器知识_RISC-V_简单启动流程_教学演示用途_1744731373.zip

    机械臂轨迹规划:MATLAB_Robotics工具箱的D-H参数建模.pdf

    文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 你是否渴望高效解决复杂的数学计算、数据分析难题?MATLAB 就是你的得力助手!作为一款强大的技术计算软件,MATLAB 集数值分析、矩阵运算、信号处理等多功能于一身,广泛应用于工程、科学研究等众多领域。 其简洁直观的编程环境,让代码编写如同行云流水。丰富的函数库和工具箱,为你节省大量时间和精力。无论是新手入门,还是资深专家,都能借助 MATLAB 挖掘数据背后的价值,创新科技成果。别再犹豫,拥抱 MATLAB,开启你的科技探索之旅!

    CNC-嵌入式-高性能-低成本控制器-GRBL

    CNC_嵌入式_高性能_低成本控制器_GRBL

    基于STM32微控制器设计的智能婴儿床

    智能婴儿床系统是基于STM32微控制器设计的一款全方位监测和互动系统,旨在提供全面的婴儿关怀解决方案。系统涵盖了体温、环境温度、湿度、光照、哭闹检测、音乐播放、烟雾浓度检测、自动摇篮模拟、WiFi通信以及云服务器连接等功能。

    【机器视觉技术】机器视觉通用软件的核心原理、功能特点及广泛应用:推动多行业智能化变革的关键技术

    内容概要:本文详细介绍了机器视觉通用软件的工作原理、功能特点及其广泛应用。机器视觉通用软件通过图像采集、预处理、特征提取与分析、决策与输出四个核心步骤,模拟人类视觉系统,使机器具备“看懂”图像并作出决策的能力。其功能涵盖图像识别、测量、检测、定位和分类等多个方面,能够满足不同行业的需求。文章还回顾了机器视觉技术从20世纪50年代至今的发展历程,展望了未来在技术突破、应用拓展以及与其他技术融合方面的潜力。; 适合人群:对机器视觉技术感兴趣的工程师、

    22020-9KZB_改封装-.pdf

    22020-9KZB_改封装-.pdf

    全球6G技术大会2024年5G6G天地一体化技术探索与实践白皮书87页.pdf

    全球6G技术大会2024年5G6G天地一体化技术探索与实践白皮书87页.pdf

    【计算机教育】计算机二级考试复习与做题心得:备考建议、科目选择及常见误区解析

    内容概要:本文围绕计算机二级考试的复习与做题心得展开,首先介绍了计算机二级考试的性质及其对不同人群的价值,接着详细对比了各科目的内容、适用人群和难度,推荐了适合不同基础考生的选择。文章还给出了以Python为例的复习计划,分为基础学习、真题练习和模拟练习三个阶段,并针对选择题、填空题、改错题和编程题提供了具体的做题技巧。最后,指出了备考中的常见误区,强调了实际操作的重要性,并鼓励考生不要因背景限制而畏惧考试,指出通过考试不仅能在简历上加分,还能提升个人能力。 适合人群:正在准备或考虑参加计算机二级考试的学生,特别是应届毕业生、希望获得学分或奖学金的同学,以及想进入国企、事业单位或公务员系统的求职者。 使用场景及目标:①帮助考生了解计算机二级考试的内容和价值;②为考生提供科目选择的指导;③制定合理的复习计划并掌握有效的做题技巧;④避免备考中的常见错误,提高通过率。 阅读建议:本文内容详实,语言轻松易懂,适合在备考初期阅读,以制定整体复习规划。考生可以根据自身情况,重点参考科目选择和复习计划部分,并结合做题技巧进行针对性练习。

    全球6G技术大会2024年6G未来电视视频应用场景需求与技术解析白皮书33页.pdf

    全球6G技术大会2024年6G未来电视视频应用场景需求与技术解析白皮书33页.pdf

    基于MATLABEdgeServer的智能电网实时谐波分析系统.pdf

    文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 你是否渴望高效解决复杂的数学计算、数据分析难题?MATLAB 就是你的得力助手!作为一款强大的技术计算软件,MATLAB 集数值分析、矩阵运算、信号处理等多功能于一身,广泛应用于工程、科学研究等众多领域。 其简洁直观的编程环境,让代码编写如同行云流水。丰富的函数库和工具箱,为你节省大量时间和精力。无论是新手入门,还是资深专家,都能借助 MATLAB 挖掘数据背后的价值,创新科技成果。别再犹豫,拥抱 MATLAB,开启你的科技探索之旅!

    【C语言编程】PTA反转加法构造回文数算法实现:千位数级别高效字符串处理与回文检测

    内容概要:本文介绍了通过C语言实现反转加法构造回文数的方法,能够处理1000位的大整数。文中详细展示了如何定义字符数组存储大整数,通过自定义函数而非调用现成函数来提高效率,实现对输入数字的反转、判别是否为回文以及最优字符大整数加法等操作。核心代码包括字符串指针反序判回文、字符串指针反转赋值、高效字符串指针反转赋值判回文等函数,利用goto语句实现循环,确保当数字不是回文时,将原数与其反转后的数相加,得到的新数继续判断,直到构造出回文数或达到设定的最大迭代次数(如10次)。 适合人群:有一定C语言编程基础的学习者,尤其是对大整数运算、字符串操作感兴趣的读者。 使用场景及目标:①理解C语言中字符数组表示大整数、字符串指针操作等底层机制;②掌握通过反转加法构造回文数的算法思想,熟悉goto语句控制流程的应用。 其他说明:此代码示例强调了自定义函数在处理特定任务时的高效性,读者可以在此基础上进一步优化算法,探索更多关于大整数运算的知识。

    深度学习:MATLAB_实现Transformer网络用于文本情感分析.pdf

    文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 你是否渴望高效解决复杂的数学计算、数据分析难题?MATLAB 就是你的得力助手!作为一款强大的技术计算软件,MATLAB 集数值分析、矩阵运算、信号处理等多功能于一身,广泛应用于工程、科学研究等众多领域。 其简洁直观的编程环境,让代码编写如同行云流水。丰富的函数库和工具箱,为你节省大量时间和精力。无论是新手入门,还是资深专家,都能借助 MATLAB 挖掘数据背后的价值,创新科技成果。别再犹豫,拥抱 MATLAB,开启你的科技探索之旅!

    基于MATLABModelica的液压系统数字孪生故障预测系统.pdf

    文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 你是否渴望高效解决复杂的数学计算、数据分析难题?MATLAB 就是你的得力助手!作为一款强大的技术计算软件,MATLAB 集数值分析、矩阵运算、信号处理等多功能于一身,广泛应用于工程、科学研究等众多领域。 其简洁直观的编程环境,让代码编写如同行云流水。丰富的函数库和工具箱,为你节省大量时间和精力。无论是新手入门,还是资深专家,都能借助 MATLAB 挖掘数据背后的价值,创新科技成果。别再犹豫,拥抱 MATLAB,开启你的科技探索之旅!

    STM32F103C8T6-基于FreeRTOS系统实现步进电机控制

    STM32F103C8T6-基于FreeRTOS系统实现步进电机控制

Global site tag (gtag.js) - Google Analytics