ThreadLocal

参考小端有话说,侵改;

定义

每个线程,都会有一个Map(ThreadLocal.ThreadLocalMap),用来存储以我们定义的ThreadLocal对象为key,以我们自定义的值为value的名值对。以此机制,保证了多线程间该变量值的隔离。

结论

同步与ThreadLocal是解决多线程中数据访问问题的两种思路,前者是数据共享的思路,后者是数据隔离的思路

扩展:内存泄漏问题。

ThreadLocal对象是弱引用。在GC时,会直接回收。这种情况下,Map中的key为null,value值还在,无法得到及时的释放。目前的策略是在调用get、set、remove等方法时,会启动回收这些值。但是如果一直没调用呢?嗯,很容易就导致内存泄漏了。当然,并不能因为此就认为是弱引用导致的内存泄露,而应该是,设计的这个变量存储机制,导致了泄露。所以在使用的时候,要及时释放。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容