当前位置: 首页 > news >正文

TTL(TransmittableThreadLocal)详解

一、什么是TTL?

TTL是ThreadLocal的增强版,想理解TTL需要先理解ThreadLocal,具体可以见专栏《ThreadLocal详解》的文章。

TTL是阿里巴巴开源的一个Java库。它继承了InheritableThreadLocal并对其进行了扩展,主要目的是在多线程执行任务时,实现ThreadLocal值在不同线程之间的传递,尤其是解决在线程池场景下的ThreadLocal变量失效的问题

二、为什么会出现TTL?

在TTL出现前,我们用的是ThreadLocal以及ITL(InheritableThreadLocal),正因为它们的局限才促成了TTL的出现。

ThreadLocal

  • 作用:在当前线程存储变量,实现线程隔离。
  • 局限:当开启一个子线程时,子线程无法继承父线程的变量。不能实现跨线程传递。

InheritableThreadLocal

  • 作用:实现了父子线程变量值传递,当创建一个子线程时会自动继承父线程的值
  • 局限:无法应对线程池。线程池里线程是预先创建好并且长期存在的,而ITL仅在线程创建时进行拷贝。当我们把任务提交给线程池时,执行任务的线程造就创建好了,它不会执行初始化拷贝逻辑,导致我们拿到过期值,或者根本拿不到值。

TTL就是为了解决“线程池复用导致上下文丢失”的问题。

三、工作原理

简单来说,就是不在线程创建时传递值,而是在任务提交或执行传。

流程大概是这样的:

  • 上下文拷贝:在任务提交时,TTL会拷贝当前上下文到任务中。
  • 任务执行前设置上下文:在任务执行前,TTL会把任务中的上下文拷贝到当前线程中。
  • 任务执行后清理上下文:在任务执行完毕后,TTL会清理当前线程中的上下文,防止内存泄漏。

四、常见的使用场景

1. 链路追踪:在分布式系统重传递追踪ID,方便日志关联和排查。

2. 上下文传递:比如在多线程环境下传递用户信息,TTL可以确保当前线程知道操作用户是谁。

3. 事务管理:在分布式事务中传递事务上下文,确保事务的一致性。

五、补充问题

1. TTL可以跨微服务传递上下文信息吗,微服务的服务是线程还是进程?

TTL不能跨微服务传递,它只能在“同一个Java进程内部”的线程之间传递,一个运行中的微服务就是一个独立的进程,拥有独立的内存空间、JVM实例和资源,而在微服务内部,由于需要处理并发请求,会开启成百上千个线程。所以不同微服务之间是跨进程、跨机器通信的。

如果需要跨服务传递,就需要通过OpenFeign等调用其他服务。

TTL 解决了“纵向”(线程间)的传递,而 RPC 协议解决了“横向”(服务间)的传递。两者结合,才构成了微服务的全链路上下文透传。

http://www.jsqmd.com/news/532821/

相关文章:

  • 千问3.5-27B效果展示:手写笔记识别→结构化整理→知识点图谱构建
  • 在 SAP Gateway 中吃透 Redefinition Support:从 BW、ODP、BOPF 到外部 OData 的可重定义实践
  • 2026六大业务管理CRM系统测评,销售到供应链全维度对比 - jfjfkk-
  • macOS一键部署OpenClaw:快速连接Qwen3-32B-Chat镜像
  • SecGPT-14B免配置亮点:内置llm.log监控、webshell验证、一键启停脚本
  • 开自助棋牌室需要边界云系统的哪些功能?一份基础清单说明
  • 微信聊天记录永久备份指南:三步完成数据导出与离线查看
  • RTC-8564实时时钟芯片驱动开发与工业级应用实践
  • Qwen3.5-4B-Claude-Opus实战教程:用‘显示思考过程’功能反向验证模型推理可靠性
  • DDColor黑白老照片修复全攻略:从上传到出图,保姆级教学
  • Wan2.2-I2V-A14B惊艳效果展示:极光舞动+雪原反光动态视频生成
  • 小红书数据采集技术解析与实战指南:基于xhs库的合规化实现方案
  • 解决历理 Win11开机键盘需插拔修复脚本
  • 猫抓:突破网页资源捕获技术壁垒的开源解决方案
  • 前端 AI 助手实战评测:Grok 3、DeepSeek 与 GitHub Copilot 在真实项目中的表现
  • 谷歌在其营销平台中新增了由 Gemini 驱动的人工智能工具
  • IndexTTS-2-LLM性能提升秘籍:CPU指令集优化部署案例
  • 3步解锁百度网盘全速下载:告别龟速的终极方案
  • 手把手教你部署通义千问2.5-7B:从下载到对话全流程
  • 如何进行食品FDA认证?详细步骤大揭秘
  • 说说长沙康乃馨呵护中心口碑怎么样,费用多少? - 工业设备
  • 告别卡顿!用CesiumLab 4.0.7把倾斜摄影OSGB秒变流畅3DTiles(附Draco压缩与KTX2纹理实战)
  • 次元画室作品集:基于Qwen3-32B的二次元角色设计案例分享
  • COMSOL两相流模型:附赠视频讲解与PDE建模推导过程
  • 区间预测QRCNN-BiGRU-MultiAttention基于分位数回归双向门控循环单元结合...
  • TMSpeech:多场景语音转写的Windows离线解决方案
  • 北京腕表行情深度观察:高端腕表维修市场的价值重构与品牌服务网络 - 时光修表匠
  • Umi-OCR HTTP服务参数配置指南:如何避免Rapid引擎无响应问题
  • 单细胞RNA-seq中的RNA速率:基于剪接信息的细胞命运预测
  • 2026年浙江好用的车牌识别终端厂家排名,推荐哪家 - 工业品网