ThreadLocal小结概要

资料参考

网上介绍ThreadLocal原理的文章很多。

原理、源码方面 史上最全ThreadLocal 详解(一)-CSDN博客​​​​​​

使用方面 https://www.cnblogs.com/aaacarrot/p/17262135.html​​​​​​

内存泄漏方面 ThreadLocal内存泄漏及弱引用的理解-CSDN博客

一篇文章,从源码深入详解ThreadLocal内存泄漏问题 - 简书

这篇讲的细,从源码讲弱引用及其回收

图多丰富 ThreadLocal原理剖析_threadlocal 剖析-CSDN博客

ThreadLocal概要重点

前面先放的是一些优秀总结,可以根据索引查阅。

这里开始正文,主要是简单总结一些要点,作为使用的注意事项。

1 什么是ThreadLocal及其使用场景

ThreadLocal是线程的私有本地变量,设定和查询都是在当前线程内的。

ThreadLocal 适用于如下两种场景

  1. 每个线程需要有自己单独的实例
  2. 实例需要在多个方法中共享,但不希望被多线程共享

那么,有几个场景就很适合来使用ThreadLocal

1 是用户认证。

2 是数据库连接。

3 是数据跨层传递。

4 是使用ThreadLocal解决线程安全问题 

5 链路Trace

ThreadLocal的清理

重要的几点

  1. 线程不死 threadlocal不死。虽有弱引用及set、get动作时有清理,但一些复杂情况下线程池内线程可能有一些逻辑导致threadlocal一直不能被回收。
  2. 拦截器拦截住网络请求,每次拦截即覆写信息,即每次拦截即做了回收清理。
  3. 有些场景需要在很多方法透传一些后增的信息,这些不是全局需要的,这种情况需要注意用完自行remove。

你可能感兴趣的:(java,开发语言)