Thread.currentThread().setContextClassLoader()问题,肯定给分

skyflyings 2004-08-12 11:20:27
Thread.currentThread().setContextClassLoader(classloader newclassloade)

这个表达式从字面上的意思是设置当前线程的classloader为新的newclassloader,我想问一下当前线程的classloader的具体作用是什么?我在程序中这句的前后都加上System.out.println(getClass().getClassLoader());而结果前后输出的没有什么变化,我的理解是后一个输出应该是newclassloade,我的理解对吗?请高手指教,谢谢
...全文
1068 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jacky1206 2004-08-18
  • 打赏
  • 举报
回复
一般来说,我们使用java时,不需要考虑classloader,只要类放置在classpath指定的路径范围之内,一旦用到时,会自动加载这个类(就象你前面指出的代码里的getClass().getClassLoader()使用默认的classloader加载该类),classloader多用于需要加载一些外部类尤其是没有在classpath路径指定但又希望只用,此时就需要使用class的forName方法,forName有两个不同参数的方法,一个forName可以指定三个参数,第三个参数就是指定classloader,有时出于加密类的需要,自己写classloader来载入类,防止一些类被反编译
skyflyings 2004-08-12
  • 打赏
  • 举报
回复
说的具体些:
oldclassloader= Thread.currentThread().getContextClassLoader();
A a = new A();
Thread.currentThread().setContextClassLoader(newclassloader);
B b= new B();
那么
a 是用oldclassloader加载的,b使用newclassloader加载的,这样理解对吗?
skyflyings 2004-08-12
  • 打赏
  • 举报
回复
to: lins(Anders*小明)
你的blog收藏在哪?
skyflyings 2004-08-12
  • 打赏
  • 举报
回复
在哪?
moke33 2004-08-12
  • 打赏
  • 举报
回复
classloader这个东西有点玄机,呵呵,你看看王森的《java深度历险》吧,讲的非常不错
林仪明 2004-08-12
  • 打赏
  • 举报
回复
classloader
我的blog的收藏中有几篇文章可以回答你!
skyflyings 2004-08-12
  • 打赏
  • 举报
回复
怎么没人回我

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧