ThreadLocal:

    线程的一个本地化对象。当多线程中的对象使用ThreadLocal维护变量是,ThreadLocal为每个使用该变量的线程分配一个独立的变量副本。

    threadlocal通常定义为静态变量

工作原理:

  内部维护一个ThreadLocalMap,每次set数据时是用ThreadLocal本身作为Key

 

常见使用场景:

  1.session 管理

 

常见的坑:

  1.ThreadLocal是与线程绑定的一个变量,假设没有将ThreadLocal内的变量删除(remove)或替换,它的生命周期将会与线程共存,假如我们使用的是线程池,会导致下一个线程获取到垃圾数据

解决方案:从设计的角度要让ThreadLocal的set、remove有始有终,通常在外部调用的代码中使用finally来remove数据

相关文章:

  • 2021-04-02
  • 2022-01-18
  • 2021-07-26
  • 2021-10-04
  • 2021-07-30
  • 2021-12-03
  • 2021-04-30
  • 2022-02-23
猜你喜欢
  • 2021-11-17
  • 2021-04-17
  • 2022-01-16
  • 2021-05-20
  • 2022-12-23
  • 2021-08-01
  • 2021-11-28
相关资源
相似解决方案