ThreadLocal 线程局部变量
- 通过类中的ThreadLocalMap,为每个线程存储独立的变量副本。键为当前线程对象,值为对应线程的变量副本
- ThreadLocal的应用场合,最适合的是按线程多实例(每个线程对应一个实例)的对象访问,并且这个对象很多地方都要用到。
- Thread有个TheadLocalMap类型的属性,叫做threadLocals,该属性用来保存该线程本地变量。这样每个线程都有自己的数据,就做到了不同线程间数据的隔离,保证了数据安全。
- 一般情况下,从接受请求到返回相应所经过的所有程序调用都同属于一个线程
- ThreadLocal与Thread同步机制的对比
同步机制,通过对象的锁机制保证同一时间只有一个线程访问变量,变量多线程共享--“时间换空间”。
ThreadLocal为每个线程创建独立的变量副本,隔离了多个线程对访问数据的冲突,访问并行化,对象独享化 --“空间换时间”