ThreadLocal是如何和各个Thread之间建立起关联的


本篇文章为大家展示了ThreadLocal是如何和各个Thread之间建立起关联的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。我们来看 ThreadLocal 是如何和各个 Thread 之间建立起关联的呢?我们来看,每个Thread,都有这样一个属性,一个ThreadLocal.ThreadLocalMap的属性,能互不影响的秘密都在这里。/* ThreadLocal values pertaining to this thread. This map is maintained * by the ThreadLocal class. */ ThreadLocal.ThreadLocalMap threadLocals = null;这个ThreadLoalMap是什么时候被设置值的呢?我们来看ThreadLocal的使用。一般的用法是:ThreadLocal local = new ThreadLocal() {protected Integer initialValue() { return 1; }};然后使用这个ThreadLocal变量进行set和get操作。set的时候,会先判断对于当前线程,是否已经分配了map,没有则创建。public void set(T value) { Thread t = Thread.currentThread(); ThreadLocalMap map = getMap(t); if (map != null) map.set(this, value); else createMap(t, value); }是否已经分配过map就是根据当前线程的 theThreadLocals 属性来判断的ThreadLocalMap getMap(Thread t) { return t.threadLocals;}那createMap的时候,就会给当前线程的threadLocals赋值void createMap(Thread t, T firstValue) { t.threadLocals = new ThreadLocalMap(this, firstValue);}这个ThreadLocalMap里是以数组的形式放的多个Entry。在 get 的时候,如果没数据会根据上面的initValue方法创建一个新的返回。这 香港云主机样多个线程用的就是不同的东西了。那这里还有一点,对于不同的东西, ThreadLocal 可以通过泛型做区分,当然你也能一股脑的放到一起,那取的时候就费劲了。上述内容就是ThreadLocal是如何和各个Thread之间建立起关联的,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注开发云行业资讯频道。

相关推荐: apache shardingsphere 事务的实现方法

这篇文章主要讲解了“apache shardingsphere 事务的实现方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“apache shardingsphere 事务的实现方法”吧!本地事务Transac…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 09/23 19:34
下一篇 09/23 20:11

相关推荐