首页 > Java > 我应该何时以及如何使用 ThreadLocal 变量?

我应该何时以及如何使用 ThreadLocal 变量?

上一篇 下一篇

什么时候应该使用变量?ThreadLocal如何使用?

分割线

网友回答:

由于 a 是对给定数据中的引用,因此在使用线程池的应用程序服务器中使用 s 时,最终可能会出现类加载泄漏。在清理任何 u 或使用 的方法时,您需要非常小心。ThreadLocalThreadThreadLocalThreadLocalget()set()ThreadLocalremove()

如果在完成后不清理,则它对作为已部署 Web 应用的一部分加载的类的任何引用都将保留在永久堆中,并且永远不会被垃圾回收。重新部署/取消部署 Web 应用不会清理每个 对 Web 应用类的引用,因为 不是 Web 应用拥有的内容。每个后续部署都将创建该类的新实例,该实例永远不会被垃圾回收。ThreadThread

由于一些谷歌搜索之后,您最终会出现内存不足异常,可能会增加而不是修复错误。java.lang.OutOfMemoryError: PermGen space-XX:MaxPermSize

如果最终遇到这些问题,则可以通过使用 Eclipse 的内存分析器和/或遵循 Frank Kieviet 的指南和后续操作来确定哪个线程和类保留了这些引用。

更新:重新发现了Alex Vasseur的博客条目,该条目帮助我追踪了我遇到的一些问题。ThreadLocal

分割线

网友回答:

一种可能(也是常见的)用途是,当您有一些不是线程安全的对象,但您希望避免同步对该对象的访问时(我在看你,SimpleDateFormat)。相反,为每个线程提供其自己的对象实例。

例如:

public class Foo
{
    // SimpleDateFormat is not thread-safe, so give one to each thread
    private static final ThreadLocal<SimpleDateFormat> formatter = new ThreadLocal<SimpleDateFormat>(){
        @Override
        protected SimpleDateFormat initialValue()
        {
            return new SimpleDateFormat("yyyyMMdd HHmm");
        }
    };

    public String formatIt(Date date)
    {
        return formatter.get().format(date);
    }
}

文档。

分割线

网友回答:

许多框架使用 ThreadLocals 来维护与当前线程相关的一些上下文。例如,当当前事务存储在 ThreadLocal 中时,您无需通过每个方法调用将其作为参数传递,以防堆栈中的某个人需要访问它。Web 应用程序可能会在 ThreadLocal 中存储有关当前请求和会话的信息,以便应用程序可以轻松访问它们。使用 Guice,您可以在为注入的对象实现自定义作用域时使用 ThreadLocals(Guice 的默认 servlet 作用域很可能也使用它们)。

ThreadLocals 是一种全局变量(尽管由于它们仅限于一个线程,因此稍微不那么邪恶),因此在使用它们时应小心以避免不必要的副作用和内存泄漏。设计您的 API,以便在不再需要 ThreadLocal 值时始终自动清除它们,并且不可能错误地使用 API(例如,像这样)。ThreadLocals可以用来使代码更简洁,在极少数情况下,它们是使某些东西工作的唯一方法(我目前的项目有两个这样的情况;它们记录在“静态字段和全局变量”下)。

模板简介:该模板名称为【我应该何时以及如何使用 ThreadLocal 变量?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【Java】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 232次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 03-23
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
单页式简历模板 微信公众平台 微信素材 响应式 微信模板 企业网站 html5 微信图片 自适应 微信文章
您可能会喜欢的其他模板