一.ThreadLocal(本地线程)
1.就是一个Map。
key -> Thread.getCurrentThread()
value -> 线程需要保存的变量
2.ThreadLocal.set(value)-> map.put(Thread.getCurrentThread(), value);
3.ThreadLocal.get()-> map.get(Thread.getCurrentThread());
4.内存问题 :在并发量高的时候,可能内存溢出。
5.使用ThreadLocal的时候,一定注意回收资源问题,每个线程结束之前,将当前线程保存的线程变量一定要删除 。ThreadLocal.remove();
6.代码实现:
public class Test_01 {
volatile static String name = “zhangsan”;
static ThreadLocal tl = new ThreadLocal<>();
public static void main(String[] args) {
new Thread(new Runnable() {
public void run() {
tl.set(“wangwu”);//设置线程保存对应的值
System.out.println(tl.get()); //获取线程保存的值
tl.remove(); //回收线程保存的值
}
}).start();
}
}