【潘森教育】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 的工作原理] 该文观点仅代表作者本人,今日霍州系信息发布平台,霍州网仅提供信息存储空间服务。

猜你喜欢

照见加速时代的情感共鸣

影片借朱迪与尼克侦办“气候墙发明权”案件的过程,展开了一场关于历史叙事、贡献认定与系统性和解的思辨,其现实指向尤为深刻。在文艺创作领域,这种将娱乐属性、思想探索与精湛制作相结合的努力,展示了如何以轻盈姿态承载…

照见加速时代的情感共鸣

维信诺:与清华联合研发pTSF技术,量产商用补齐产业链短板(维信诺实力)

该技术在业界是独家吗?由公司与清华大学联合研发的第四代pTSF(磷光辅助热活化敏化荧光)技术,解决了OLED在高亮度下效率下降的难题,并大幅延长了器件寿命,使其兼具荧光的高色纯度、高稳定性,以及磷光的高效率,…

维信诺:与清华联合研发pTSF技术,量产商用补齐产业链短板(维信诺实力)

女性♀️痛😣风一般有什么症状

女性♀️痛风的典型症状包括突发性关节剧烈疼痛、关节发红肿胀及活动受限,有时伴有晨僵感或持续不适。出现这些症状时应尽早就医,以明确诊断并防止病情恶化。 痛风发作时,脚趾、脚踝和膝关节是女性♀️患者最常受影响的部位,但手指和肘部等其他关节也可能受累

女性♀️痛😣风一般有什么症状

小车刹车失灵狂奔490公里 油耗尽才停 多方联动化险为夷(汽车刹车失灵后的应急处理)

12月17日晚,一辆行驶在G75高速上的小车因定速巡航故障刹车失灵,以115公里的时速行驶了约490公里,最终燃油耗尽才停下。一路上,交警前面开道,路政后面压阵,组成“护航编队”,确保车辆安全

小车刹车失灵狂奔490公里 油耗尽才停 多方联动化险为夷(汽车刹车失灵后的应急处理)

揭开竹管使用背后的秘密(揭开竹管使用背景图片)

你是否好奇竹管在日常生活中有着怎样的独特用途?本文将带你探索这种古老材料背后的现代智慧——从传统的建筑支撑到现代的园艺设计,竹管的应用远比想象中更为广泛。我们将深入探讨竹管的正确使用方法,解答其背后的科学原理,并提供实际应用建议。

揭开竹管使用背后的秘密(揭开竹管使用背景图片)