Java源码:ThreadLocal
来源:互联网
一、个人见解
通俗来说,实例变量就是在每个具体实例对象级别的变量,类变量(静态变量)就是在类级别的变量,类似的,线程本地变量就是在线程级别存放的变量,而ThreadLocal就是用来提供线程本地变量存取的工具。在网上各种搜,结合自己的理解,觉得ThreadLocal适合用户以下场景(纯属个人见解,有不对地方或有更好的使用场景请赐教哈):
访问线程不安全对象。比如下面SimpleDateFormat的使用,这是个线程不安全的类,不想每次都new一个对象用完即弃?把它放进ThreadLocal里吧,这样每个线程就只拥有一个实例了。
存放线程级别的状态对象。例如上下文对象、用户会话这种对象,不想在各个方法调用中层层传递?把它放进ThreadLocal里面把,这样在同一个线程任何一个地方都可以获取。
一、个人见解
通俗来说,实例变量就是在每个具体实例对象级别的变量,类变量(静态变量)就是在类级别的变