文章目录
- 1 基础知识
- 1.1 强软弱虚四种引用
- 2 ThreadLocal出现的好处
- 3 ThreadLocal源码分析
- 3.1 ThreadLocal内存泄露问题
- 3.2 ThreadLocal为什么使用的是弱引用
- 3.3 清扫过期的Entry
- 4 ThreadLocal使用建议
1 基础知识
1.1 强软弱虚四种引用
【整体结构】

【强引用】

【软引用】

【弱引用】


【虚引用】


2 ThreadLocal出现的好处

3 ThreadLocal源码分析



3.1 ThreadLocal内存泄露问题



3.2 ThreadLocal为什么使用的是弱引用


3.3 清扫过期的Entry
expungeStaleEntry
4 ThreadLocal使用建议
【初始化】
ThreadLocal<String> t1 = ThreadLocal.withInitial(() -> "hello");
【声明为static】
建议把ThreadLocal修饰为static
ThreadLocal实现线程隔离不在于它自己本身,而在于ThreadLocalMap,所以ThreadLocal可以只初始化一次,只分配一次存储空间就可以了。 无需作为成员变量多次被初始化。
使用完之后需要显示调用remove
![(文件[夹]批量分类整理_多级匹配_交叉匹配_路径结构交叉调整)文件[夹]批量复制](https://img-blog.csdnimg.cn/481ae9f3e5174a4a8d3777dc62f4814b.png)


















