ThreadLocal
ThreadLocal内部结构

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

浙公网安备 33010602011771号