当前位置:  开发笔记 > 编程语言 > 正文

上下文类加载器

如何解决《上下文类加载器》经验,为你挑选了1个好方法。

有什么区别?

Class.getClassLoader()和Thread.getContextClassLoader()?



1> VonC..:

从这个线程:

Class.getClassLoader()返回ClassLoader加载调用它的类.

Thread.getContextClassLoader()返回ClassLoader集合作为调用它的上下文ClassLoader,如果调用了Thread的方法Thread,则可以与ClassLoader加载Thread类本身的上下文不同setContextClassLoader(ClassLoader).

这可以用于允许启动线程的对象指定ClassLoader在线程中运行的对象应该使用,但是这些对象中的一些对象的协作是必需的.

所以如果你想知道为什么有3个API调用

Thread.getContextClassLoader()
Thread.getClassLoader()
Class.getClassLoader()

,你可以在这里找到一个走出ClassLoader迷宫的出路.

为什么首先存在线程上下文类加载器?它们在J2SE中引入而没有大张旗鼓.Sun Microsystems缺乏适当的指导和文档可能解释了为什么许多开发人员发现它们令人困惑.

事实上,上下文类加载器为J2SE中引入的类加载委托方案提供了一个后门.通常,JVM中的所有类加载器都按层次结构组织,这样每个类加载器(引导整个JVM的原始类加载器除外)都有一个父类.

[...] 更糟糕的是,某些应用程序服务器将上下文和当前类加载器设置为具有相同类路径但尚未作为委托父级和子级相关的不同ClassLoader实例.

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有