ThreadLocal 类的作用是提供线程内的局部变量,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或者组件之间一些公共变量的传递的复杂度。
一、概述
1、jdk 注释
This class provides thread-local variables. These variables differ from their normal counterparts in that each thread that accesses one (via its {@code get} or {@code set} method) has its own, independently initialized copy of the variable. {@code ThreadLocal} instances are typically private static fields in classes that wish to associate state with a thread (e.g., a user ID or Transaction ID).
2、谷歌翻译
这个类提供线程局部变量,这种变量在多线程环境下访问(通过get或set方法访问)时能保证各个线程里的变量相对独立于其他线程内的变量。ThreadLocal实例通常来说都是private static类型的,用于关联线程和线程的上下文。
二、问题
使用不当容易照成 内存泄漏 问题,应在线程使用完变量后进行清除 ,调用 ThreadLocal.remove() 方法。
三、使用方法
1、get函数该函数用来获取与当前线程关联的ThreadLocal的值,函数签名如下:public T get()
如果当前线程没有该ThreadLocal的值,则调用initialValue函数获取初始值返回。
2、set函数set函数用来设置当前线程的该ThreadLocal的值,函数签名如下:public void set(T value)
设置当前线程的ThreadLocal的值为value。
3、remove函数remove函数用来将当前线程的ThreadLocal绑定的值删除,函数签名如下:public void remove()
在某些情况下需要手动调用该函数,防止内存泄露。