1、ThreadLocal
ThreadLocal提供了线程内存储变量的能力,这些变量不同之处在于每一个线程读取的变量是对应的互相独立的。通过get和set方法就可以得到当前线程对应的值。
1.1、ThreadLocal和Synchronized
ThreadLocal和Synchronized都是为了解决多线程中相同变量的访问冲突问题,不同的点是:
Synchronized是通过线程等待,牺牲时间来解决访问冲突。
ThreadLocal是通过每个线程单独一份存储空间,牺牲空间来解决冲突,并且相比于Synchronized,ThreadLocal具有线程隔离的效果,只有在线程内才能获取到对应的值,线程外则不能访问到想要的值。