一、什么是ThreadLocal
ThreadLocal是为解决多线程程序的并发问题提供了一个类,使用该类能够编写很多优美的多线程程序,ThreaLocal并不是一个Thread,而是Thread的局部变量。
也就是说每个线程能够处理自己的数据,类似于该线程的上下文信息。属于该线程自己的变量。此时这个变量可以用ThreadLocal 来保存和获取,获取到的也是该线程的信息,而不会造成其他线程访问到。
ThreadLocal 提供的方法
get()方法是用来获取ThreadLocal在当前线程中保存的变量副本,set()用来设置当前线程中变量的副本,remove()用来移除当前线程中变量的副本,initialValue()是一个protected方法,一般是用来在使用时进行重写的,它是一个延迟加载方法,下面会详细说明。参考链接:ThreadLocal 详细介绍
另外使用过程中注意:
1、 在使用 ThreadLocal 时,都要在线程全部执行完之后再finally代码块中调用 remove() 方法,清除内存(线程池中使用要尤为注意)
2、 保存在 ThreadLocal 的数据不要太大