文章目录
- 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