首先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如何保证获取到想要线程变量相关推荐

  1. java 线程不足_jvm - 如何在没有运行缺点的Windows上获取Java进程的线程和堆转储...

    jvm - 如何在没有运行缺点的Windows上获取Java进程的线程和堆转储 我有一个Java应用程序,我从控制台运行,然后控制台执行另一个Java进程. 我想获得该子进程的线程/堆转储. 在Uni ...

  2. python多线程返回值_python获取多线程及子线程的返回值

    最近有个需求,用多线程比较合适,但是我需要每个线程的返回值,这就需要我在threading.Thread的基础上进行封装 import threading class MyThread(threadi ...

  3. Spring---------ThreadLocal(线程变量副本)

    在学Bean的时候,我们都知道Bean有单例的还有多例的.那么我就有一个问题,单例的线程安全问题是怎样解决的呢? 在查找资料的时候,我发现Spring是通过ThreadLocal(线程变量副本来实现的 ...

  4. C语言多线程并行的利器之线程变量

    线程变量 在C语言中,如果函数使用的变量或内存均为栈变量,则函数可以充分保证线程的并行执行,但栈变量的生命周期却很短,无法广泛适用于并行编程的指导建议! 如果你想每个线程使用的变量或存储区域,在内存分 ...

  5. 线程管理(九)使用本地线程变量

    声明:本文是< Java 7 Concurrency Cookbook >的第一章, 作者: Javier Fernández González 译者:郑玉婷 校对:方腾飞 使用本地线程变 ...

  6. webexam php,Laravel View Composer - 当 include 一个模板时,自动获取其所需的变量

    网站中,许多页面的侧边栏是相同的.例如: 分类列表页,与文章详情页的侧边栏都包含 最新文章 最新评论 统计计数 这些相同的侧边栏数据也是动态的,并不是固定的. 在每个 controller 里都写一遍 ...

  7. 【thymeleaf】【SpringBoot】Thymeleaf 获取.properties中的配置项变量

    前言 略. Thymeleaf 获取.properties中的配置项变量 假设我在 Thymeleaf 中写JavaScript的时候,发现我需要读取application.properties中的配 ...

  8. 获取Windows 系统的内核变量

    关键字:PsLoadedModuleList.PsActiveProcessHead.NtSystemDebugControl         PsNtosImageBase.KdVersionBlo ...

  9. JAVA基础系列:内部类获取外部类的成员变量

    内部类获取外部类的成员变量,使用 外部类类名.this.变量名 的形式获取 public class Outer {public String name = "outer";cla ...

最新文章

  1. PyTorch算法加速指南
  2. “未卜先知”、“自学成才”:GANs奇思妙想TOP10
  3. 这21 个刁钻的HashMap 面试题,我把阿里面试官吊打了!
  4. GitLab修改用户密码
  5. HTTP的301与302
  6. html批量转doc linux,HTML+CSS入门 Linux下如何批量将md文件转换为html文件
  7. 这套网红试卷火了!数学老师您应该是文案出身吧?
  8. java执行python路径_如何在Python中获取当前执行文件的路径?
  9. go 在windows下使用redis
  10. 大数据之-Hadoop之HDFS的API操作_定位读取文件_只读取某个block的内容_案例---大数据之hadoop工作笔记0065
  11. Windows10原神二次元美化主题工具包分享
  12. 【PCL】—欧式聚类算法详解
  13. R语言方差分解分析(Variation partition analysis)及其显著性检验
  14. 360安全桌面没有计算机了,360安全卫士桌面上的图标不见了怎么办
  15. 【Openbravo开发】Openbravo windows开发环境搭建
  16. 算法篇-用栈来求解汉诺塔问题
  17. openssh漏洞修复
  18. MNE学习笔记(六):Epoched data的可视化
  19. 视觉学习笔记Week9 Gazebo仿真环境下相机焦距计算
  20. Java实现 蓝桥杯油漆问题

热门文章

  1. Java中类、抽象类、接口的联系与区别
  2. MuleSoft知识总结-7.使用Anypoint Studio
  3. 系统集成项目管理工程师——挣值管理(PV、EV、AC、SV、CV、SPI、CPI)
  4. Jpeglib开发笔记(一):JpegLib库介绍、windows编译和Demo
  5. 如果你的网站需要免费的 SVG 插图,一定不要错过 Undraw 这个网站
  6. 计算机毕业设计,Java+MySQL 高校校园招聘系统
  7. python职业发展规划书范文_职业发展规划书精选范文
  8. React + Ts项目搭建
  9. Html 所有触发事件
  10. spark知识点_RDD