JUC ThreadLocal
ThreadLocal
从其命名上就可以知道其意图是创建线程本地变量,就是希望同一个变量在不同的线程中拥有各自的值并且互不影响,其非常适合用来作为线程上下文变量,比如在一些连接池或者事务的场景中。
其思路是让每个Thread都持有一个私有的ThreadLocalMap,然后使用共享的key来保存值,而这个key就是共享的ThreadLocal实例,因此每个ThreadLocal也就对应一个本地变量。。但是,如果这个本地变量本身就是一个线程共享的对象,那么就算使用ThreadLocal也不是线程安全的。另外,设计者将具体的map操作都封装在了ThreadLocal中,然后提供统一的get/set接口,好让开发更加简洁方便。