ThreadLocal如何保证获取到想要线程变量
首先ThreadLocal并不会存储数据,它做的只是做获取和存放这些过程.数据本身并没有存在ThreadLocal中.
那么问题来了,数据到底存放在哪里?
存放在当前线程中即Thread中的ThreadLocalMap中.
那么ThreadLocalMap又是什么?
ThreadLocal的内部类.....
好玩吗....并不好玩....贴代码吧
这是ThreadLocal中的保存数据的方法,代码解析:
1.第一部获取当前线程;
2.通过当前线程获取map,从此可以看出map是与当前线程相关的是吧,此处的map存储在线程中
3.保存数据,尽然叫做map,我们大概的估计下可能数据接口有些类似map,key不能相同(其实就是这样的ThreadLocalMap数据结构就是一个Entry数组),由此你看出了什么.....即:
- 一个ThreadLocal在一个线程中只能存储一个变量值;
- 如果你想获得之前在线程存储的变量,你得保证你的ThreadLocal是个单例;
4.字面意思是创建一个线程的map,事实就是这样
那么ThreadLocal 是线程安全的吗?
一般意义上讲ThreadLocal是线程安全的,因为你操作的只是你自己的线程变量....
在其他线程中可不可以获取当前线程变量?
可以...你可以通过反射机制,加上线程对象...你操作操作...这下就不安全啦...
ThreadLocal如何保证获取到想要线程变量相关推荐
- java 线程不足_jvm - 如何在没有运行缺点的Windows上获取Java进程的线程和堆转储...
jvm - 如何在没有运行缺点的Windows上获取Java进程的线程和堆转储 我有一个Java应用程序,我从控制台运行,然后控制台执行另一个Java进程. 我想获得该子进程的线程/堆转储. 在Uni ...
- python多线程返回值_python获取多线程及子线程的返回值
最近有个需求,用多线程比较合适,但是我需要每个线程的返回值,这就需要我在threading.Thread的基础上进行封装 import threading class MyThread(threadi ...
- Spring---------ThreadLocal(线程变量副本)
在学Bean的时候,我们都知道Bean有单例的还有多例的.那么我就有一个问题,单例的线程安全问题是怎样解决的呢? 在查找资料的时候,我发现Spring是通过ThreadLocal(线程变量副本来实现的 ...
- C语言多线程并行的利器之线程变量
线程变量 在C语言中,如果函数使用的变量或内存均为栈变量,则函数可以充分保证线程的并行执行,但栈变量的生命周期却很短,无法广泛适用于并行编程的指导建议! 如果你想每个线程使用的变量或存储区域,在内存分 ...
- 线程管理(九)使用本地线程变量
声明:本文是< Java 7 Concurrency Cookbook >的第一章, 作者: Javier Fernández González 译者:郑玉婷 校对:方腾飞 使用本地线程变 ...
- webexam php,Laravel View Composer - 当 include 一个模板时,自动获取其所需的变量
网站中,许多页面的侧边栏是相同的.例如: 分类列表页,与文章详情页的侧边栏都包含 最新文章 最新评论 统计计数 这些相同的侧边栏数据也是动态的,并不是固定的. 在每个 controller 里都写一遍 ...
- 【thymeleaf】【SpringBoot】Thymeleaf 获取.properties中的配置项变量
前言 略. Thymeleaf 获取.properties中的配置项变量 假设我在 Thymeleaf 中写JavaScript的时候,发现我需要读取application.properties中的配 ...
- 获取Windows 系统的内核变量
关键字:PsLoadedModuleList.PsActiveProcessHead.NtSystemDebugControl PsNtosImageBase.KdVersionBlo ...
- JAVA基础系列:内部类获取外部类的成员变量
内部类获取外部类的成员变量,使用 外部类类名.this.变量名 的形式获取 public class Outer {public String name = "outer";cla ...
最新文章
- PyTorch算法加速指南
- “未卜先知”、“自学成才”:GANs奇思妙想TOP10
- 这21 个刁钻的HashMap 面试题,我把阿里面试官吊打了!
- GitLab修改用户密码
- HTTP的301与302
- html批量转doc linux,HTML+CSS入门 Linux下如何批量将md文件转换为html文件
- 这套网红试卷火了!数学老师您应该是文案出身吧?
- java执行python路径_如何在Python中获取当前执行文件的路径?
- go 在windows下使用redis
- 大数据之-Hadoop之HDFS的API操作_定位读取文件_只读取某个block的内容_案例---大数据之hadoop工作笔记0065
- Windows10原神二次元美化主题工具包分享
- 【PCL】—欧式聚类算法详解
- R语言方差分解分析(Variation partition analysis)及其显著性检验
- 360安全桌面没有计算机了,360安全卫士桌面上的图标不见了怎么办
- 【Openbravo开发】Openbravo windows开发环境搭建
- 算法篇-用栈来求解汉诺塔问题
- openssh漏洞修复
- MNE学习笔记(六):Epoched data的可视化
- 视觉学习笔记Week9 Gazebo仿真环境下相机焦距计算
- Java实现 蓝桥杯油漆问题
热门文章
- Java中类、抽象类、接口的联系与区别
- MuleSoft知识总结-7.使用Anypoint Studio
- 系统集成项目管理工程师——挣值管理(PV、EV、AC、SV、CV、SPI、CPI)
- Jpeglib开发笔记(一):JpegLib库介绍、windows编译和Demo
- 如果你的网站需要免费的 SVG 插图,一定不要错过 Undraw 这个网站
- 计算机毕业设计,Java+MySQL 高校校园招聘系统
- python职业发展规划书范文_职业发展规划书精选范文
- React + Ts项目搭建
- Html 所有触发事件
- spark知识点_RDD