ThreadLocal学习总结

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前)
虚(回收获得一个通知)

上一篇:删除指定的下标的元素,要求从删除的位置开始,之后的元素前移一位


下一篇:Python之内置函数总结