ThreadLocal 是多线程下变量安全的一种解决思路,让每个线程持有自己的变量副本线程之间变量互不影响做线程隔离
~~~~~~~~~~~~~~~~~~~
ThreadLocalMap里线程当键,变量是值。
有什么缺点:缺点是项目里线程池下(复用线程)不调用get、set、remove会出现问题->(内存溢出,线程变量业务出现问题)
~~~~~~~~~~~~~~~~~~~
重点是弱引用出现内存泄漏的问题。K-V的Entry类继承的弱引用WeakReference<ThreadLocal<?>> 这个类继承弱引用只对Key做弱用,Value还是强引用的关系,弱引用是为了更好的GC回收,K回收以后没有办法找到他对应的Value,线程一直存在value就一直存在 ,调用remove( )方法就会避免这样的问,remove()会把Key为null的value设为null。
就算这个线程一直存在这个强引用关系也被断掉了(set,get也会做清除操作)。
~~~~~~~~~~~~~~~~~~~
引用种类:
强(new的关系)
软(内存不足前回收)
弱(下次gc前)
虚(回收获得一个通知)
相关文章
- 01-26【进阶指南学习笔记】lowbit
- 01-26数位dpの学习笔记
- 01-266.11考试总结(NOIP模拟)7
- 01-26回文自动机学习笔记
- 01-26图论学习笔记 - 链表与邻接表
- 01-26CF1605 总结
- 01-26(原)x264代码中的码流控制学习
- 01-26机器学习笔记1(主要内容可视化)
- 01-26WPF入门学习
- 01-262015.03.16,外语,读书笔记-《Word Power Made Easy》 00 “如何最大限度的利用本书”学习笔记