当前位置: 首页 > article >正文

ThreadLocal 是什么?它的实现原理呢?

这个问题我从三个方面来回答:
  • ThreadLocal 是一种线程隔离机制,它提供了多线程环境下对于共享变量访问的安全性。
  • 在多线程访问共享变量的场景中(出现下面第一个图),一般的解决办法是对共享变量加锁(出现下面第二个图),从而保证在同一时刻只有一个线程能够对共享变量进行更新,并且基于 Happens-Before 规则里面的监视器锁规则,又保证了数据修改后对其他线程的可见性。

 

  • 但是加锁会带来性能的下降,所以 ThreadLocal 用了一种空间换时间的设计思想,也就是说在每个线程里面,都有一个容器来存储共享变量的副本,然后每个线程只对自己的变量副本来做更新操作,这样既解决了线程安全问题,又避免了多线程竞争加锁的开销。

ThreadLocal 的具体实现原理是,在 Thread 类里面有一个成员变量ThreadLocalMap,它专门来存储当前线程的共享变量副本,后续这个线程对于共享变量的操作,都是从这个 ThreadLocalMap 里面进行变更,不会影响全局共享变量的值。


http://www.kler.cn/a/105496.html

相关文章:

  • Table-GPT:让大语言模型理解表格数据
  • Android Studio 下载地址
  • Spring Cloud之API网关(Gateway)
  • 给新手程序员的建议
  • centos部署tomcat
  • 云计算模式的区域LIS系统源码,基于ASP.NET+JQuery、EasyUI+MVC技术架构开发
  • webpack 解决:TypeError: merge is not a function 的问题
  • HTML5和HTML的区别
  • MySQL多表关联on和where速度对比实测谁更快
  • 前端下载文件
  • 坤坤的悲伤生活
  • Linux文件描述符和打开文件之间的关系
  • SVN服务数据迁移(windows)
  • 0031【Edabit ★☆☆☆☆☆】【使用箭头函数】Using Arrow Functions
  • CVE-2021-44228 Apache log4j 远程命令执行漏洞
  • python爬虫之正则表达式解析实战
  • 定义USB接口,鼠标类和键盘类都可以作为实现类去实现USB接口
  • 第四章 文件管理 七、文件共享
  • [论文阅读]Point Density-Aware Voxels for LiDAR 3D Object Detection(PDV)
  • 【OpenCV实现平滑图像处理】