ThreadLocal

209 阅读1分钟

ThreadLocal 线程局部变量

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

ThreadLocal为每个线程创建独立的变量副本,隔离了多个线程对访问数据的冲突,访问并行化,对象独享化 --“空间换时间”