TreadLocal源码分析

简介: TreadLocal源码分析

公众号merlinsea


  • ThreadLocal:用于存储本线程的内容,用于本线程的其他方法使用。
  • 总结:
  • 每个线程Thread内部都要一个ThreadLocalMap的对象
  • 根据当前调用的Thread获取其内部ThreadLocalMap成员变量(这个成员变量是属于这个调用线程的)
  • 根据当前ThreadLocal的hashCode值找到应该取ThreadLocalMap中的哪个值或者应该放入ThreadLocalMap哪个位置

  • ThreadLocal的作用: 某个线程设置的值只能由对应这个线程的方法获取到,即起到了不同线程之间的相互隔离(这里的隔离就是因为在执行treadlocal.set的时候其实是把数据设置到当前这个线程自己的成员变量TreadlocalMap中了,这样就起到了不同线程只能访问自己设置的threadlocal值的作用),threadlocal可以用于在同一个线程的不同方法调用时候传递参数。


  • Thread类中持有一个ThreadLocalMap的对象,并且这个对象只能被当前线程的方法访问,这个threadlocalMap的key是当前调用的threadlocal对象,value是我们需要存储的值。

640.jpg

  • ThreadLocal类中的set方法
  • 我们set方法的时候,会通过getMap(t)方法获取当前调用线程的TreadLocalMap对象,然后对这个map对象操作。


640.jpg640.jpg640.jpg640.jpg


  • ThreadLocal类中的get方法

640.jpg640.jpg


算法训练营永久刷题班元旦优惠价,超低价格永久刷题。加入我们可以一起备战明年的春招笔试,快来参加吧~

元旦算法训练营教学福利来啦~

奔跑的小梁,公众号:梁霖编程工具库
leetcode刷题直播教学,手把手带你刷题,元旦价格优惠通知,超低价格永久刷题


目录
打赏
0
0
0
0
297
分享
相关文章
GSI服务的实现原理是什么?
答:通过光算科技自研的GPC爬虫池系统。 GSI服务,全称Google Search Infrastructure服务,是Google用来处理和返回用户搜索查询结果的基础设施。 这个基础设施包括了庞大的硬件和软件系统,通过复杂的算法和技术,它可以在瞬间处理数亿的搜索查询,返回相关且有价值的结果。 下面,我们将深入探讨GSI服务的实现原理。
221 0
GSI服务的实现原理是什么?
线程池原理初探以及源码分析(详解)
线程池原理初探以及源码分析(详解)
138 0
vivid源码分析
vivid源码分析
148 0
《从面试题来看源码》-LinkedBlockingQueue 源码分析
《从面试题来看源码》-LinkedBlockingQueue 源码分析
《从面试题来看源码》-LinkedBlockingQueue 源码分析
源码分析RateLimiter SmoothWarmingUp 实现原理(文末附流程图)
源码分析RateLimiter SmoothWarmingUp 实现原理(文末附流程图)
源码分析RateLimiter SmoothWarmingUp 实现原理(文末附流程图)
fishhook源码分析
最早了解到[fishhook](https://github.com/facebook/fishhook)是看了下面两篇文章之后,顿时让我觉得这是一个非常好的东西。总共210行代码,收获了1500+个star,神作啊。 1. [iOS Lazy Binding](http://www.atatech.org/articles/68014),使用fishhook拦截NSSetUncaughtE
2463 0
Stresstester源码分析
stresstester-1.0.jar是早期淘宝的一个压力测试工具,很方便开发人员进行本地代码的压力测试,其他专门压力测试工具也有很多,如:jmeter loadrunner 等等,本篇文章主要讲一下stresstester的源码设计
10633 0
gobblin 源码分析
最近,开始搞些大数据相关的内容,遇到的第一个问题,就是数据入库,小白刚入手,又不想写太多代码,于是从网上找,入库手段很多: DataX,Sqoop,以及Flume 等以及直接使用 Spark 进行入库,想了下当下的场景(不是简单的倒库,要从kafka拉...
1436 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等