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


相关文章
vivid源码分析
vivid源码分析
114 0
|
存储 Java 应用服务中间件
SpringMVC源码分析 RequestContextHolder使用与源码分析
SpringMVC源码分析 RequestContextHolder使用与源码分析
SpringMVC源码分析 RequestContextHolder使用与源码分析
|
存储 分布式计算 监控
【源码解读】|SparkEnv源码解读
【源码解读】|SparkEnv源码解读
139 0
|
存储 安全 Java
HashMap实现原理及源码分析
在java中,HashMap是很常用的一种数据结构,最近重新温习了一下,这里以源码层面来分析总结一下HashMap,如有不合理或疑问的地方,欢迎沟通交流。
HashMap实现原理及源码分析
|
iOS开发
fishhook源码分析
最早了解到[fishhook](https://github.com/facebook/fishhook)是看了下面两篇文章之后,顿时让我觉得这是一个非常好的东西。总共210行代码,收获了1500+个star,神作啊。 1. [iOS Lazy Binding](http://www.atatech.org/articles/68014),使用fishhook拦截NSSetUncaughtE
2444 0
|
移动开发 Java 开发者
Stresstester源码分析
stresstester-1.0.jar是早期淘宝的一个压力测试工具,很方便开发人员进行本地代码的压力测试,其他专门压力测试工具也有很多,如:jmeter loadrunner 等等,本篇文章主要讲一下stresstester的源码设计
10618 0
|
大数据 DataX 分布式计算
gobblin 源码分析
最近,开始搞些大数据相关的内容,遇到的第一个问题,就是数据入库,小白刚入手,又不想写太多代码,于是从网上找,入库手段很多: DataX,Sqoop,以及Flume 等以及直接使用 Spark 进行入库,想了下当下的场景(不是简单的倒库,要从kafka拉...
1419 0
|
区块链 数据安全/隐私保护 索引
FISCO-BCOS源码分析(四)——libethcore
libethcore是区块链核心数据结构目录。如ABI、密钥管理、区块头、预编译、交易结构等等
|
存储 API 区块链
FISCO-BCOS源码分析(三)
本部分源码位于FISCO-BCOS/libethereum/
|
存储 区块链 数据库
FISCO-BCOS源码分析(二)
本文内容代码位于FISCO-BCOS/libethereum/