ThreadLocal实现原理

ThreadLocal实现原理

答:当使用ThreadLocal维护变量时,Threadlocal为每个使用该变量的线程提供独立的变量副本,每个线程都可以独立的改变自己的副本,而不影响其他线程的变量副本。

每个线程Thread都有一个 ThreadLocal.ThreadLocalMap成员,用来保存与线程相关的变量。

 

一个线程中可以new多个ThreadLocal对象(工具类)Entry数组存储以每个ThreadLocal对象为keykey-value对。


使用WeakReference:ThreadLocal没有强引用时,以ThreadLocalkeyentry

都应该被回收,因为已经无法得到entry中的值,如果使用强引用的话,ThreadLocal在线程生命周期内始终无法回收,当使用弱引用时,ThreadLocal会自动被gc回收,即使线程仍然存在(长时间线程)

ThreadLocal内存泄漏:ThreadLocal没有强引用时,ThreadLocal自动被gc回收,这时key=null,value并没有释放,只有在getsetremove时才会清除key=nullentry


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值