ThreadLocal是什么

一个进程多个线程是如今操作系统层面的规范,如果一个进程中的所有的线程他们在同步计算结果的时候,去访问进程中的一个存储变量,那就会产生竞争条件,我们之后会讲到这里有一致性问题需要上锁,而线程局部变量,也就是ThreadLocal它能够避免这种场景的发生,因为一个线程局部变量在多个线程中它可以拥有独立的职能,独立的副本,相当于给每一个线程分配了一段独立的存储空间,他们不用产生冲突。
实现原理
java-哈希表实现
其他多线程语言都提供“ ThreadLocal ”
抽象模型

- 进程-黑色圆圈
- 每个线程都存在一个ThreadLocalMap存储一个或多个ThreadLocal局部变量
ThreadLocal使用场景介绍

- 资源持有这种情况要使用到
ThreadLocal通常一般在一个线程里,我们的一部分的数据,比如说用户数据是由多个程序有多个论可列成多个类去访问的内容,类似依赖注入,你通过ThreadLocal你可以相当于给他们提供了一个全局的访问的一个方式。 - 线程安全比如说你平时定义的一些静态的全局变量,如果它本身在多个线程之间是不需要同步的,
- 线程一致 比如spring运行在程序模型里,jdbc运行在另一个线程模型里,ThreadLocal解决两线程数据的一致性问题
- 并发计算,其实就是说你的任务先被拆分成很多的块,每一块并发的一个计算,最终把结果汇总,那么在每一个块中都会做很多的计算,有些线程的会被重复使用,在这些计算中积累这些数据,它是可以不用同步的那么频繁。
##实现原理
