gpt4 book ai didi

java - 线程上下文类加载器可以为空吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:03:29 25 4
gpt4 key购买 nike

我不完全确定我是如何遇到这种情况的,但不知何故我从 Thread.getContextClassLoader 获得了一个空的 ClassLoader。在阅读了一些内容(文档和谷歌上的信息不多)后,我得到的印象是当前线程具有空类加载器是有效的,并且应该检查对 getContextClassLoader 的调用是否有空引用。

这非常令人惊讶,因为我已经看到几个开源项目未经检查就调用了 getContextClassLoader(这让我首先检查了这一点)。具体来说,codemodel 中的这一行: JCodeModel.java line 358

(我刚刚验证了 log4j 也没有检查)

那么调用 getContextClassLoader 应该检查空引用还是我的线程有问题?

最佳答案

Thread.getContextClassLoader 返回null 是非常有效的。并非所有软件的质量都特别好。

虽然 null ClassLoader 通常是指加载系统类的引导类加载器(我认为这是正确的 - 由于历史原因这个术语被搞乱了),对于线程context class loaders 它通常被解释为未设置,而是使用系统类加载器。

IIRC,如果使用 java 命令,线程上下文类加载器将设置为主线程的系统类加载器。对于小程序,小程序线程和 EDT 将其设置为小程序类加载器。

我建议不要使用线程上下文类加载器(或大多数其他线程局部变量),除非上下文需要它。

关于java - 线程上下文类加载器可以为空吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3459216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com