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刷题直播教学,手把手带你刷题,元旦价格优惠通知,超低价格永久刷题


相关文章
|
12月前
vivid源码分析
vivid源码分析
69 0
|
存储 分布式计算 监控
【源码解读】|SparkEnv源码解读
【源码解读】|SparkEnv源码解读
113 0
|
存储 Java 应用服务中间件
SpringMVC源码分析 RequestContextHolder使用与源码分析
SpringMVC源码分析 RequestContextHolder使用与源码分析
SpringMVC源码分析 RequestContextHolder使用与源码分析
|
存储 安全 Java
《从面试题来看源码》-LinkedBlockingQueue 源码分析
《从面试题来看源码》-LinkedBlockingQueue 源码分析
《从面试题来看源码》-LinkedBlockingQueue 源码分析
图解AQS源码分析(下)
AbstractQueuedSynchronizer抽象的队列式同步器(抽象类)。提供了一个FIFO队列,可以看成是一个用来实现同步锁以及其他涉及到同步功能的核心组件,常见的有:ReentrantLock、CountDownLatch等。
图解AQS源码分析(下)
图解AQS源码分析(上)
AbstractQueuedSynchronizer抽象的队列式同步器(抽象类)。提供了一个FIFO队列,可以看成是一个用来实现同步锁以及其他涉及到同步功能的核心组件,常见的有:ReentrantLock、CountDownLatch等。
图解AQS源码分析(上)
|
存储 Java 数据库
Java集合源码分析之开篇
初衷 Java集合是我们使用最频繁的工具,也是面试的热点,但我们对它的理解仅限于使用上,而且大多数情况没有考虑过其使用规范。本系列文章将跟随源码的思路,分析实现的每个细节,以期在使用时避免各种不规范的坑。在这里,我们会惊艳于开发者优秀的设计,也会感激先辈们付出的艰辛努力,更重要的是知其所以然,少犯错误,写出优秀的代码。 许多人对集合类的理解是暴力的,当需要保存对象时就使用ArrayList,当需要保存键值对时就使用HashMap,当需要不可重复时就使用HashSet,等等。而且使用方式也比较单一:
173 0
|
iOS开发
fishhook源码分析
最早了解到[fishhook](https://github.com/facebook/fishhook)是看了下面两篇文章之后,顿时让我觉得这是一个非常好的东西。总共210行代码,收获了1500+个star,神作啊。 1. [iOS Lazy Binding](http://www.atatech.org/articles/68014),使用fishhook拦截NSSetUncaughtE
2408 0
|
移动开发 Java 开发者
Stresstester源码分析
stresstester-1.0.jar是早期淘宝的一个压力测试工具,很方便开发人员进行本地代码的压力测试,其他专门压力测试工具也有很多,如:jmeter loadrunner 等等,本篇文章主要讲一下stresstester的源码设计
10593 0
|
大数据 DataX 分布式计算
gobblin 源码分析
最近,开始搞些大数据相关的内容,遇到的第一个问题,就是数据入库,小白刚入手,又不想写太多代码,于是从网上找,入库手段很多: DataX,Sqoop,以及Flume 等以及直接使用 Spark 进行入库,想了下当下的场景(不是简单的倒库,要从kafka拉...
1393 0