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


猜你喜欢

转载自blog.csdn.net/gaibian_one/article/details/77949793