【潘森教育】ThreadLocal 的工作原理

先看看示例 1 中的情况

今日霍州(www.jrhz.info)©️

我们可以看到多个线程可以同时访问公共资源 count,当某个线程在执行 count++ 的时候,可能其他的线程正好同时也执行 count++。但由于多个线程变量 count 的不可见性,会导致另外的线程拿到旧的 count 值 + 1,这样就出现了 realCount 预计是 20,但是实际上是 18 的数据问题。

再看看示例 2 中的情况:

今日霍州(www.jrhz.info)©️

如图所示,往大的方向上说,ThreadLocal 会给每一个线程都创建变量的副本,保证每个线程访问都是自己的副本,相互隔离。

往小的方向上说,每个线程内部都有一个 threadLocalMap,每个 threadLocalMap 里面都包含了一个 entry 数组,而 entry 是由 threadLocal 和数据(这里指的是 count)组成的。这样一来,每个线程都拥有自己专属的变量 count。示例 2 中线程 1 调用 calc 方法时,会先调用的 getCount 方法,由于第一次调用 threadLocal.get() 返回是空的,所以 getCount 返回值是 0。这样 threadLocal.set (getCount () + 1); 就变成了 threadLocal.set (0 + 1); 它会给线程 1 中 threadLocal 的数据值设置成 1。线程 2 再调用 calc 方法,同样会先调用 getCount 方法,由于第一次调用 threadLocal.get () 返回是空的,所以 getCount 返回值也是 0。这样 threadLocal.set (getCount () + 1); 会给线程 2 中 threadLocal 的数据值也设置成 1。。。。。。最后每个线程的 threadLocal 中的数据值都是 1。

特别声明:[【潘森教育】ThreadLocal 的工作原理] 该文观点仅代表作者本人,今日霍州系信息发布平台,霍州网仅提供信息存储空间服务。

猜你喜欢

上海西装爱好者狂喜!三家宝藏西装店真实测评来啦(上海做西装哪家店最好)

我去的时候,店员很耐心地给我讲解不同面料的特点和适合的场合,整个定制过程仪式感拉满,当然价格也相对高一些,适合追求品质和独特性、预算充足的宝子。 风格偏向英伦复古风,店里的西装设计很有格调,细节处特别用心,像…

上海西装爱好者狂喜!三家宝藏西装店真实测评来啦(上海做西装哪家店最好)

无假滑感!2026年高保湿水润沐浴露精选持久留香温和养肤

用户不再满足于简单的身体清洁,更追求在每日的沐浴时光中,获得肌肤屏障修护、深层保湿乃至情绪疗愈的综合体验。在《消费者报道》2025年度测评中,经SGSIntertek 32项指标检测及1500名用户实测,…

无假滑感!2026年高保湿水润沐浴露精选持久留香温和养肤

代账AI『机器人』️排障攻略:掌金教你搞定特殊行业合规类各类故障(ai代理记账)

场景:税务申报提示错误、风险预警误报漏报、政策匹配偏差代账行业最在意的就是税务合规,掌金AI财务『机器人』️的核心优势就是引领税务合规新实践,遇上这类问题,直接用桔吉的专利功能排查: 场景:特殊行业(电商、建筑…

代账AI『机器人』️排障攻略:掌金教你搞定特殊行业合规类各类故障(ai代理记账)

丙烯酸树脂如何选?国涂新材料以智能化生产与全链条方案破局(丙烯酸树脂如何包膜尿素)

肇庆市国涂新材料有限公司,这家从“中国涂料之乡”顺德发展而来的高新技术企业,正以其深厚的研发积淀与智能化生产体系,为市场提供破局方案。国涂新材料秉承“品质为本、创新为魂”的理念,将持续聚焦涂料行业的技术前沿…

丙烯酸树脂如何选?国涂新材料以智能化生产与全链条方案破局(丙烯酸树脂如何包膜尿素)

如何挑选适合现代家居的陶瓷小号香炉?——品味香道新潮流(如何挑选适合现代化车型)

2026年,陶瓷小号香炉作为室内香薰装饰的流行选择,既满足香道爱好者的文化追求,又契合都市居家环境的空间美学。如何挑选尺寸合适、设计美观且实用的香炉成为大家关心的话题。本文将帮助你了解挑选陶瓷小号香炉的关键因素,包括适用香型、容量大小、材质

如何挑选适合现代家居的陶瓷小号香炉?——品味香道新潮流(如何挑选适合现代化车型)