1 概念

保存线程本地化对象的容器,每个线程都可以独立地改变自己的副本。

对于线程资源共享问题:

  • 同步机制(以时间换空间),使用对象锁保证同一个时间只有一个线程访问修改变量。访问串行化,对象共享化。
  • ThreadLocal(以空间换时间),每个线程有自己的存储副本,自己修改自己的变量。访问并行化,对象独享化。

    2 源码分析

  • java.lang.InheritableThreadLocal

  • java.lang.ThreadLocal

3 使用场景

  • Spring 事物
    • 一个Service的多个DAO层共享一个数据库连接
    • org.springframework.transaction.support.TransactionSynchronizationManager
  • Servelet Request Bean 作用域。
    • org.springframework.web.context.request.RequestContextHolder
  • Web容器授权结果存储,后续业务随取随用。