ThreadLocal是用来维护本线程中的变量,不能解决共享变量的并发问题。
ThreadLocal是各线程将值存入该线程的map中,以ThreadLocal自身作为key,需要用时获得的是该线程之前存入的值。
如果存入的是共享变量,那取出的也是共享变量,并发问题还是存在的。
ThreadLocal的主要用途是为了维护线程自身对象(说白了就是保存)和避免参数传递。
若实际场景中,有一多层方法的调用:因为多线程,所以无法将参数改成静态,因为没有源码,所以无法修改为参数调用(而且这样做的改动也太大)。
使用方法:
1、线程外创建ThreadLocal<T>实例。
2、线程内 .set(),在该线程内任何其他地方 .get()。
参考: