1、为什么需要ThreadLocal?
来看这样一个实例,在某个类中,创建了一个Context的对象,其中设置了一个trackerID,然后再调用了其他的java类,然后最终需要使用到ctx的这个tranckerID要怎么办?
读码农翻身之用来维护本线程变量的ThreadLocal
有人想,直接把Context对象一层层传递下去,这样到时候就可以用到了
读码农翻身之用来维护本线程变量的ThreadLocal
但是这样的缺点,就是太麻烦,有时候改动会很大。此时又有人认为可以把set/get TrackerID的方法修改为static静态方法。
读码农翻身之用来维护本线程变量的ThreadLocal
但是这样多线程并发的时候有可能出问题。(因为线程1调用了set,然后线程2又调用了set,数据会相互覆盖。)-----------话说能不能set方法是私有的,然后get方法是静态的?

2、解决方案:
面对上面的问题,能否把这个值放到线程中?让线程携带这个值到处跑,这样无论在任何地方都可以轻松获取到?这个就是ThreadLocal

3、如何使用?
保存数据:
读码农翻身之用来维护本线程变量的ThreadLocal
读码农翻身之用来维护本线程变量的ThreadLocal
取出数据:
读码农翻身之用来维护本线程变量的ThreadLocal

相关文章:

  • 2021-06-10
  • 2021-10-08
  • 2021-07-16
  • 2021-06-21
  • 2021-03-31
  • 2021-10-19
  • 2021-11-17
猜你喜欢
  • 2021-05-24
  • 2021-05-30
  • 2022-01-04
  • 2021-08-07
  • 2021-09-10
  • 2021-12-09
  • 2021-05-02
相关资源
相似解决方案