1、ThreadLocal是在多线程编程的环境下,为每个线程创建一个单独的线程变量,互不影响。避免了多个线程同时操作共享变量时产生冲突而带来的一些问题。
2、底层原理:ThreadLocal本身并不存储值,它依赖于Thread类中的ThreadLocalMap,ThreadLocalMap的实例变量threadLocals,当调用set(T value)时,ThreadLocal将自身作为Key,值作为Value存储到Thread类中的ThreadLocalMap中;详情见图片。
3、ThreadLocal.get()方法源码详解、ThreadLocal.set()方法源码详解。
4、内存泄露问题
5、如何在项目中使用 ThreadLocal关键字等