{"repo":"alibaba/transmittable-thread-local","free":true,"listed":false,"github":"https://github.com/alibaba/transmittable-thread-local","clone":"git clone https://github.com/alibaba/transmittable-thread-local.git","description":"📌 a missing Java std lib(simple & 0-dependency) for framework/middleware, provide an enhanced InheritableThreadLocal that transmits values between threads even using thread pooling components.","language":"Java","stars":8295,"topics":["java","threadlocal","threadsafe","transmittable","context","thread-pool","executor","transmittable-thread-local","middleware","framework"],"license":"Apache-2.0","category":"analytics","readme_excerpt":"[!IMPORTANT] 🚧 这个分支是 TransmittableThreadLocal(TTL) v3 ，在开发中还没有发布。 v3 的版本说明、工作项列表及其进展，参见 issue 432。 👉 目前使用中的稳定发布版本 v2.x 在 分支 2.x 上。 📖 English Documentation 📖 中文文档 ---------------------------------------- - 🔧 功能 - 🎨 需求场景 - 👥 User Guide - 1. 简单使用 - 2. 保证线程池中传递值 - 2.1 修饰 Runnable 和 Callable - 整个过程的完整时序图 - 2.2 修饰线程池 - 2.3 使用 Java Agent 来修饰 JDK 线程池实现类 - Java Agent 的启动参数配置 - 🔌 Java API Docs - 🍪 Maven依赖 - 🔨 关于编译构建 - ❓ FAQ - ✨ 使用 TTL 的好处与必要性 - 🗿 更多文档 - 📚 相关资料 - JDK Core Classes - 💗 Who Used - 👷 Contributors ---------------------------------------- 🔧 功能 👉 TransmittableThreadLocal ( TTL )：在使用线程池等会池化复用线程的执行组件情况下，提供 ThreadLocal 值的传递功能，解决异步执行时上下文传递的问题。一个 Java 标准库本应为框架/中间件设施开发提供的标配能力，本库功能聚焦 & 0依赖，支持 Java 6 21 。 JDK 的 InheritableThreadLocal 类可以完成父线程到子线程的值传递。但对于使用线程池等会池化复用线程的执行组件的情况，线程由线程池创建好，并且线程是池化起来反复使用的；这时父子线程关系的 ThreadLocal 值传递已经没有意义，应用需要的实际上是把 任务提交给线程池时 的 ThreadLocal 值传递到 任务执行时 。 本库提供的 TransmittableThreadLocal 类继承并加强 InheritableThreadLocal 类，解决上述的问题，使用详见 User Guide。 整个 TransmittableThreadLocal 库的核心功能（用户 API 、线程池 ExecutorService / ForkJoinPool / TimerTask 及其线程工厂的 Wrapper ；开发者 API 、框架/中间件的集成 API ），只有 1000 SLOC 代码行 ，非常精小。 欢迎 👏 - 建议和提问，提交 Issue - 贡献和改进，Fork 后提通过 Pull Request 贡献代码 [!NOTE] 从 TTL v2.13+ 开始，升级到 Java 8 。🚀 如果需要 Java 6 的支持，使用版本 2.12.x 🎨 需求场景 ThreadLocal 的需求场景即 TransmittableThreadLocal 的潜在需求场景，如果你的业务需要『在使用线程池等会池化复用线程的执行组件情况下传递 ThreadLocal 值』则是 TransmittableThreadLocal 目标场景。 下面是几个典型场景例子。 1. 分布式跟踪系统 或 全链路压测（即链路打标） 2. 日志收集记录系统上下文 3. Request 级 Cache 4. 应用容器或上层框架跨应用代码","default_branch":null,"files":null,"tree":[],"storefront":"/r/alibaba","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/alibaba/transmittable-thread-local/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}