9.20. 什么是 ThreadLocal?

发布于 2023-05-08 12:28:28 字数 694 浏览 40 评论 0

ThreadLocal 用于创建线程的本地变量,我们知道一个对象的所有线程会共享它的全局变量,所以这些变量不是线程安全的,我们可以使用同步技术。但是当我们不想使用同步的时候,我们可以选择 ThreadLocal 变量。

每个线程都会拥有他们自己的 Thread 变量,它们可以使用 get() / set() 方法去获取他们的默认值或者在线程内部改变他们的值。ThreadLocal 实例通常是希望它们同线程状态关联起来是 private static 属性。

简单说 ThreadLocal 就是一种以空间换时间的做法,在每个Thread里面维护了一个以开地址法实现的 ThreadLocal.ThreadLocalMap,把数据进行隔离,数据不共享,自然就没有线程安全方面的问题了。

ThreadLocal 是 Java 中的一种线程级别的变量,用于在当前线程中存储和获取数据,其他线程无法访问和修改该变量。可以将 ThreadLocal 对象看作一个容器,存放当前线程的局部变量。每个线程都有一个 ThreadLocalMap 对象,用于存储该线程的 ThreadLocal 变量。ThreadLocalMap 以 ThreadLocal 对象作为键,以 ThreadLocal 变量的值作为值。

ThreadLocal 的主要作用是提供线程安全的局部变量,在多线程并发的情况下,不同线程访问的是自己的局部变量,避免了线程安全问题的发生。常见的应用场景包括:存储当前用户信息、保存用户登录状态、数据库事务管理等。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84960 人气
更多

推荐作者

eins

文章 0 评论 0

世界等同你

文章 0 评论 0

毒初莱肆砂笔

文章 0 评论 0

初雪

文章 0 评论 0

miao

文章 0 评论 0

qq_zQQHIW

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文