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容器授权结果存储,后续业务随取随用。