JAVA学习之路---ThreadLocal
来源:互联网 发布:潍坊淘宝托管 编辑:程序博客网 时间:2024/05/22 14:43
ThreadLocal作用存储当前线程对应的变量,方便使用,不至于像传递参数那样传递下去,多个线程直线对应的变量互补影响。
例子1:比如我们在控制器层通过ThreadLocal的set方法将session中的用户信息存放在ThreadLocal中,那么我们在service层可以通过get方法获取当前线程存在的用户信息,这样就不需要传递request对象。也就是我们需要在多个地方需要使用到变量,我们可以考虑使用ThreadLocal中。
首先我们看看set方法
通过代码我们可以看到,首先会获取当前线程,然后通过当前线程获取线程对应的ThreadLocalMap,如果map不存在,那么重新创建一个ThreadLocalMap,如果存在的话,那么把
ThreadLocal实例对象作为key,设置的值作为value
通过createMap()方法我们也可以看出来,每个线程对应一个自己的ThreadLocalMap,key为ThreadLocal示例对象,value为我们存放的数据
如图的get()方法,也是通过当前线程获取当前线程对应的ThreadLocalMap,然后从map中取出通过set()方法设置的值。
总结:由于每个线程都存在独立的ThreadLocalMap,每个都只能访问自己set进去的值,与其他线互不影响。
0 0
- JAVA学习之路---ThreadLocal
- Java 之 ThreadLocal学习
- java 之 ThreadLocal学习
- JAVA并发--ThreadLocal学习之路
- JAVA并发学习之ThreadLocal
- Java新技术---线程学习之ThreadLocal
- Java多线程学习之ThreadLocal源码分析
- [Java] Java ThreadLocal 学习
- ThreadLocal学习之详解
- Python学习之ThreadLocal
- 学习java的ThreadLocal
- java基础-ThreadLocal学习
- java-ThreadLocal学习记录
- Java多线程之ThreadLocal
- Java多线程之ThreadLocal
- Java基础之ThreadLocal
- Java线程之ThreadLocal
- java之ThreadLocal笔记
- Shader案例篇—《镜子1》
- JS:input上传如何获取文件名并显示在另一个文本框中
- jQuery学习笔记(三) 元素处理
- bzoj 1078: [SCOI2008]斜堆 (可并堆)
- 剑指offer-----用两个栈实现队列(java版)
- JAVA学习之路---ThreadLocal
- 计算机网络——概述
- python学习(一)
- 【Java每日一题】20170110
- android_54_电话录音机
- Node核心模块之QueryString
- File Watch resourece
- Shader案例篇二《镜子2》
- 未能加载文件或程序集“ESRI.ArcGIS.Carto, Version=10.1.0.0, Culture=neutral, PublicKeyToken=8fc3cc631e44ad86”或它的