ThreadLocal的基本理解

Posted liubincode

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ThreadLocal的基本理解相关的知识,希望对你有一定的参考价值。

本人第一次写博客,理解尚浅,往后多多指教。

ThreadLocal可以让我们拥有当前线程的变量,每个线程可以通过get()和set()方法来获取这个局部变量进行操作,并且保证线程之间都是独立的。

用途:

一、管理connetion。

二、避免一些参数的传递。

ThreadLocal实现的原理

TheadLocal类部有个内部类ThreadLocalMap,用Entry类作为存储,将当前的ThreadLocal对象作为key,变量作为value,

总结:

  1. 每个Thread维护着一个ThreadLocalMap的引用
  2. ThreadLocalMap是ThreadLocal的内部类,用Entry来进行存储
  3. 调用ThreadLocal的set()方法时,实际上就是往ThreadLocalMap设置值,key是ThreadLocal对象,值是传递进来的对象
  4. 调用ThreadLocal的get()方法时,实际上就是往ThreadLocalMap获取值,key是ThreadLocal对象
  5. ThreadLocal本身并不存储值,它只是作为一个key来让线程从ThreadLocalMap获取value

以上是关于ThreadLocal的基本理解的主要内容,如果未能解决你的问题,请参考以下文章

ThreadLocal的正确使用与原理

对ThreadLocal的一些理解

理解ThreadLocal(之二)

正确理解ThreadLocal

008-ThreadLocal

ThreadLocal初探