ThreadLocal 的原理

简介: ThreadLocal 用于实现多线程环境下的变量隔离,每个线程通过 ThreadLocalMap 独享资源,避免竞争。以 ThreadLocal 为 key,隔离对象为 value,实现线程间数据独立。使用后需调用 remove() 防止内存泄漏。

ThreadLocal 的主要目的是用来实现多线程环境下的变量隔离

  • 【解释】即每个线程自己用自己的资源,这样就不会出现共享,没有共享,就不会有多线程竞争的问题

原理

  • 每个线程对象内部有一个 ThreadLocalMap,它用来存储这些需要线程隔离的资源
  • 资源的种类有很多,比如说数据库连接对象、比如说用来判断身份的用户对象 ...
  • 怎么区分它们呢,就是通过 ThreadLocal,它作为 ThreadLocalMap 的 key,而真正要线程隔离的资源作为 ThreadLocalMap 的 value
  • ThreadLocal.set 就是把 ThreadLocal 自己作为 key,隔离资源作为值,存入当前线程的 ThreadLocalMap
  • ThreadLocal.get 就是把 ThreadLocal 自己作为 key,到当前线程的 ThreadLocalMap 中去查找隔离资源
  • ThreadLocal 一定要记得用完之后调用 remove() 清空资源,避免内存泄漏
相关文章
|
5月前
|
人工智能 前端开发 物联网
历史科普视频的AI自动化生产工作流:从全手动到半自动的工程演进
本文量化历史科普视频制作瓶颈,对比全手动(Stable Diffusion/GPT-SoVITS/Manim等开源栈)与半自动(花生AI为核心)方案。实测混合工作流将单期耗时从29–49小时压缩至10–15小时,效率提升60%+,兼顾质量、可控性与落地性。
|
5月前
|
数据采集 缓存 JSON
API接口设计:企业级通用规范与实战设计指南
本文梳理企业级API设计规范,涵盖六大设计原则、RESTful路径与参数规范、统一返回结构、安全风控、缓存策略及容错迭代机制,结合电商、ERP等实战场景,提供可直接落地的标准化方案,助力降低联调成本、保障系统稳定与长期演进。
624 0
|
11月前
|
SQL 运维 关系型数据库
智能数据库运维大脑 DAS Agent 使用全攻略
智能数据库运维大脑 DAS Agent 使用全攻略
|
11月前
|
安全 Java 索引
说说 java 中常见的集合类
本文介绍了Java集合框架的核心接口(Collection、List、Set、Map)及其常见实现类。图示展示了类间关系,重点解析ArrayList、LinkedList、HashSet、HashMap等实现原理与性能特点,并指出线程安全及进阶特性,助你掌握集合体系关键知识点。
|
11月前
|
消息中间件 Cloud Native Java
SpringCloud概述
Spring Cloud是Spring推出的微服务一站式解决方案,弥补了分散技术栈的整合难题。它具备约定大于配置、组件丰富、开箱即用等特点,完美支持云原生架构。版本以伦敦地铁站命名,如Hoxton.SR12,避免与子项目版本冲突,便于统一管理。
SpringCloud概述
|
11月前
|
存储 关系型数据库 MySQL
为什么MySQL索引结构是B+tree ?
MySQL采用B+树作为索引结构,因其非叶子节点仅存键值与指针,可存储更多键,降低树高,提升查询效率。数据集中于叶子节点并形成双向链表,支持高效稳定的范围查询。通常树高为2-3层,即可容纳上千万数据,显著优于二叉树或B树。
|
9月前
|
算法 安全 Android开发
Anki:让记忆更高效、更智能的开源力量
总之,Anki 是一个集科学、高效、自由于一体的强大工具。它不会让学习本身变得毫不费力,但它会让你付出的每一分努力都更有价值。如果你正苦恼于记忆难题,不妨试试 Anki,让科学的方法为你的学习赋能。
2675 11
Anki:让记忆更高效、更智能的开源力量
|
8月前
|
人工智能 数据库 开发者
OpenClaw「虾搞」数据库首场活动明日杭州开搞!
3月14日,OpenClaw“虾搞”数据库首场线下活动将在杭州阿里西溪园区举行。原定70人的技术沙龙,4天报名超600人,场地紧急扩容3倍!聚焦AI Agent与数据库融合,致敬开发者敢试错、勇探索的“虾搞”精神。全程直播,多地巡演即将启动。
839 3
|
11月前
|
存储 关系型数据库 MySQL
MySQL数据库中的 char 与 varchar的区别是什么?
MySQL中char和varchar均用于存储字符串,但char为定长,固定空间,速度快但占空间;varchar为变长,按需存储,省空间但稍慢。设计表时应根据字段长度是否固定选择:如手机号用char(11),用户名等用varchar。
|
11月前
|
算法 安全 数据安全/隐私保护
比较一下 DES、AES、SM4
DES、AES和SM4均为对称加密算法。DES采用56位密钥,已不推荐使用;AES支持128、192、256位密钥,全球广泛采用;SM4为我国商用密码标准,支持128位密钥,主要用于国内信息安全领域。