threadlocal的设计思想十分简单,它的核心对象就是threadlocalmap,被声明在thread类里面,每个thread都持有一个threadlocalmap,所以才能实现线程隔离,以达到存储共享变量的作用:
<code>threadlocal.threadlocalmap threadlocals = null;</code>
对threadlocalmap的所有操作都在threadlocal类里面,我认为threadlocal本身其实只是个工具类,threadlocalmap 才是共享变量在线程中的副本的存在。下面是threadlocal中对线程的threadlocalmap 的操作:
//设置当前线程的共享变量的值,key为threadlocal对象本身,value为共享变量的值
}<code>`</code>
//得到线程的threadlocalmap对象
我们来说说threadlocalmap这个对象,它是一个hashmap结构,每个key和value都构成一个entry,这个entry继承了弱引用: