在写ThreadLocal之前,需要先巩固下一点相关知识:Java内存模型及共享变量的可见性。

内存模型中所有变量存储在主内存中,当一个线程中要使用某个变量时,需要从主内存复制该变量到其线程内才能操作,此时线程中操作的是主内存变量的副本,操作完成后再刷回主内存。刷回的实质就是变量赋值

如果多个线程访问同一个变量时,每个线程都具有一个副本,操作完毕后都会刷回主内存,刷回时间存在先后,则赋值有先后,当然后者会覆盖前者,这是造成可见性问题的次要原因。

引入以上知识点后,再来说明ThreadLocal。一个线程想使用某个变量,于是从主内存复制该共享变量到线程内部中。使用完毕后想再下次再次使用该变量时,得到的变量副本是上次使用的副本,而不是从主内存的变量再次复制过来的副本,并且不想让其他线程影响到该变量。这就是ThreadLocal的目的,其实现不是通过共享变量这种方式实现的,详细内容下面介绍

目的很明确,但是身处JAVA内存模型中要遵循内存模型规范,下面看看JDK是如何即满足内存模型规范,又满足ThreadLocal目的。

谈一谈不常见却又不可少的ThreadLocal相关推荐

  1. 浅谈消息队列及常见的分布式消息队列中间件

    背景 分布式消息队列中间件是是大型分布式系统不可缺少的中间件,通过消息队列,应用程序可以在不知道彼此位置的情况下独立处理消息,或者在处理消息前不需要等待接收此消息.所以消息队列主要解决应用耦合.异步消 ...

  2. 【建站系列教程】5、谈一谈网站的静态化

    [建站系列教程]5.谈一谈网站的静态化[进阶] 动态页面?静态页面?伪静态页面? 三个页面有何优缺点? 为什么要让网页静态化 如何网页伪静态化? 写在前面:大家好,我是热爱编程的小泽. [建站系列教程 ...

  3. 怎么学python-结合学习经历,谈一谈如何学习Python

    结合自己的学习经历,谈一谈如何学习Python吧. 入门阶段 Python其实语言本身已经很接近自然语言了,所以入门其实并不麻烦.如果你是从未接触过编程的萌新,给你推荐一门Udacity CS101, ...

  4. 谈一谈并查集QAQ(上)

    最近几日理了理学过的很多oi知识...发现不知不觉就有很多的知识忘记了... 在聊聊并查集的时候顺便当作巩固吧.... 什么是并查集呢? ( Union Find Set ) 是一种用于处理分离集合的 ...

  5. python 二维数组长度_谈一谈多维数组

    谈 一 谈 多 维 数 组 在各种语言中,都提供了多维数组.而多维数组又是很让人迷惑的一个语法结构.今天给大家聊一下多维数组使用中的一些问题. 这里,以Python和IDL为主讲解. 多维数组的概念 ...

  6. 怎么自学python-结合学习经历,谈一谈如何学习Python

    结合自己的学习经历,谈一谈如何学习Python吧. 入门阶段 Python其实语言本身已经很接近自然语言了,所以入门其实并不麻烦.如果你是从未接触过编程的萌新,给你推荐一门Udacity CS101, ...

  7. 写在工作的第十年: 谈一谈专注和基础的重要性

    写在工作的第十年: 谈一谈专注和基础的重要性 老帮菜的自我吐槽 不知不觉, 作为一个打工人, 作为一个写程序的打工人, 职业生涯的第十个年头悄然而至. 从一个充满雄心壮志的有志青年, 到如今有家有室的 ...

  8. [vue][面试]谈一谈对vue组件化的理解?

    谈一谈对vue组件化的理解? 思路:组件化定义,优点,使用场景和注意事项等方面展开陈述,同时要强调vue中组件化的一些特点. #####源码分析1:组件定义 源码位置:src/core/global- ...

  9. 谈一谈对 TailwindCSS 的看法

    谈一谈对 TailwindCSS 的看法 从 NPM.DEVTOOL 的标签中可以看出: 每个月 npm 下载量高达 300 万次,jsDelivr 下载量更是高达 900万次,Star 数也即将突破 ...

最新文章

  1. 用Auto-TensorCore代码生成优化matmul
  2. 【云计算】阿里云云计算专业认证考试
  3. JavaScript Array reverse 方法:颠倒数组中元素的顺序
  4. 添加chorme插件时出现“程序包无效”
  5. 【学习笔记】人类为什么最终选择了芯片
  6. 浅析weak指针的实现
  7. Mybatis判断int类型是否为空
  8. Linux入门:usermod - 修改用户帐户信息
  9. 使用HttpClient连接池进行https单双向验证
  10. python ggplot为什么不能取代matplotlib_为什么geom_bar()不会像python ggplot中那样更改填充颜色?...
  11. python shell清屏指令_Python Shell 怎样清屏?
  12. 电子计算机及其部件,2021年电子计算机及其部件行业营销部门表格模板汇总.docx...
  13. 大牛直播SDK-Windows RTMP/RTSP/本地FLV播放器使用说明
  14. windows聚焦壁纸不更新_如何解决Win10聚焦锁屏壁纸不自动更新的问题
  15. 网络视频广告今年起步
  16. 中科院计算所是怎样的存在?院校详情大盘点!
  17. python应用内部审计_软件机器人实现内部审计自动化变革,助力企业转型数字化审计...
  18. Uboot 使用串口Kermit协议传输文件
  19. 阿里云体验--搭建超级小班课网课系统
  20. Python文件IO基础,看这篇文章就够了!

热门文章

  1. sort函数用法python_python内置函数sorted()及sort() 函数用法和区别
  2. 中文只占一个字符_长寿的人,3个部位可能“发红”,哪怕只占一个,身体还算健康...
  3. C语言:替换字符串中某一段子字符串
  4. 学python必须得英语精通吗_“学习python必须精通的几个模块“
  5. matlab中round函数_Excel中round函数的使用方法
  6. opencv 人脸识别_python基于openCV人脸识别18行代码实现
  7. Android界面性能优化最全总结、原理剖析
  8. service程序改为windows窗体展示
  9. 【动态规划】天上掉馅饼
  10. 【★】电子产品降价的3大原因!