美文网首页
ThreadLocal总结

ThreadLocal总结

作者: 不要夜空霓虹的繁荣 | 来源:发表于2021-06-07 20:34 被阅读0次

1.什么是ThreadLocal

它是一个本地线程副本变量的工具,用于私有线程和该线程存放的副本对象做一个映射,实现多个线程之间的变量互不干扰。

2.ThreadLocal 工作原理是什么?

每一个线程都会有一个ThreadLocalMap,他是(key,value)格式,他的key是一个弱引用,也就是ThreadLocal本身,而他的value就是存储的副本变量,也就是说,ThreadLocal并不参与存储变量,而是作为一个工具,用来维护线程中的Map,帮助它存取变量。

3.ThreadLocal 如何解决 Hash 冲突

ThreadLocal和HashMap不一样,并不是利用链式结构去解决hash冲突,而是采用线性探测的方式。所谓线性探测,就是根据初始 key 的 hashcode 值确定元素在 table 数组中的位置,如果发现这个位置上已经被其他的 key 值占用,则利用固定的算法寻找一定步长的下个位置,依次判断,直至找到能够存放的位置。

4.ThreadLocal 的内存泄露是怎么回事?

因为ThreadLocalMap 的key是弱引用,当JVM进行垃圾回收时会把key回收掉,而map的value是强引用,JVM无法回收它,就会一直储存在内存中,因而导致内存泄漏。

5.为什么 ThreadLocalMap 的 key 是弱引用

如果是强引用,ThreadLocal对象被回收时,由于ThreadLocalMap还保持强引用,如果不进行手动回收,还是会导致内存泄漏,而是弱引用的话,在调用set,get,remove的时候会被清除。

6.ThreadLocal 的应用场景有哪些

适用于独立变量副本的情况,比如Hibernate的session获取场景。

相关文章

  • ThreadLocal的使用原理总结

    ThreadLocal的使用方法: ThreadLocal原理总结:

  • 聊一聊我眼中的ThreadLocal(面试题形式总结)

    这篇总结一下 ThreadLocal,主要的议题有: ThreadLocal 介绍 ThreadLocal 实现原...

  • Android消息机制 知识点总结

    Android消息机制 知识点总结 1. ThreadLocal总结 ThreadLocal是一个线程内部的数据存...

  • ThreadLocal总结

    ThreadLocal是java.lang包里的一个优秀的多线程工具。ThreadLocal为变量在每个线程中都创...

  • ThreadLocal 总结

    一 、概述 定义官方定义: This class provides thread-local variables....

  • ThreadLocal总结

    ThreadLocal适合于以下场景:(1) 每个线程都有;(2) 每个线程都不一样;(3) 作用范围为整个类。在...

  • ThreadLocal总结

    问:ThreadLocal底层的map是线程安全的吗?不是线程安全的,也不需要为它设置线程安全的锁。ThreadL...

  • ThreadLocal总结

    1.什么是ThreadLocal 它是一个本地线程副本变量的工具,用于私有线程和该线程存放的副本对象做一个映射,实...

  • ThreadLocal使用总结

    ThreadLocal使用总结 使用场景:几个子线程要访问具有同一个初始值的变量,在各自的线程中创建该变量的副本,...

  • ThreadLocal学习总结

    ThreadLocal提供线程内变量的存取操作,方便在同个线程里面,数据的获取。减少函数或者组件的公共变量传递的复...

网友评论

      本文标题:ThreadLocal总结

      本文链接:https://www.haomeiwen.com/subject/dhixeltx.html