ThreadLocal

ThreadLocal内部结构
image
ThreadLocal的实现原理是通过set把value set到线程的threadlocals属性中,
threadlocals是一个Map,其中的key是ThreadLocal的this引用,value是我们所set的值
一. 为什么ThreadLocal会内存泄露

  1. 在线程池中,因为线程没有销毁,导致ThreadLocal内部的数据还保存在线程中,虽然ThreadLocal的Entry是弱引用,jvm会被回收,但是value还存在线程中,最好用完之后调用ThreadLocal.remove()方法。
    二、ThreadLocal内部类ThreadLocalMap为什么要采用开放寻址法解决hash冲突?
    开放寻址法概念:一旦发生了冲突,就去寻找下一个空的散列地址,只要散列表足够大,空的散列地址总能找到,并将记录存储。
    优点:当结点规模较小时,开放地址法较为节省空间。
    缺点:
    1、容器产生堆积问题,不适于大规模的数据存储。
    2、散列函数的设计对冲突会有很大的影响,插入是可能会出现多次冲突的现象。
    3、实现较为复杂,删除的元素是多个冲突元素中的一个,需要对后面的元素作处理。
posted @ 2025-07-08 21:41  Charlie-Pang  阅读(13)  评论(0)    收藏  举报