首页 > 其他 > 详细

ThreadLocal的理解

时间:2020-04-30 00:14:26      阅读:74      评论:0      收藏:0      [点我收藏+]


    主要是作为线程间的一个共享变量,虽然每个线程都能访问这个共享变量,但是每个thread放进去的内容只能本thread看到,别的thread看不到,常见的使用场景有Spring的@transaction和MyBatis 分页查询,具体源码解读可以参考下面的一系列图片

技术分享图片

 

 

    对于Threadlocal而言,使用弱引用是为了避免 new 出来的ThreadLocal对象内存泄露,因为如果换成强引用,那当在应用中将tl置为null的时候,该ThreadLocal对象因为还有强引用在指着所以就不会被会回收,这个线程不结束就一直回收不了。
还有另外一种内存泄露的场景是如果ThreadLocals这个map的key 在置为null,同时也执行了垃圾回收之后,则key变为null,这个时候的value将永远获取不到,也释放不掉,这就又产生了内存泄露,避免这个泄露的场景是,养成良好的开发习惯,ThreadLocalMap中的内容不用的时候,一定remove掉

ThreadLocal的理解

原文:https://www.cnblogs.com/hopeiscoming/p/12805823.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!