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

猜你喜欢

没有气场就别尬演!《太平年》51岁梅婷告诉我们怎样才是巾帼英雄(没有气场的女生)

这部48集的剧集已经播出了前四集,虽然大部分内容还在铺垫人物关系,但故事的深度和演员们的精湛表演都使人充满了期待。她决定让女儿孙太真侍奉钱弘俶五年,而这部剧的开端,仅仅只是铺垫了更多错综复杂的情节,相信后续的…

没有气场就别尬演!《<strong>太平年</strong>》51岁梅婷告诉我们怎样才是巾帼英雄(没有气场的女生)

忘不了新雅这口经典鲜,皮脆肉香回回必点!(新忘不了情歌词)

作为上海老牌粤菜馆,创建于1926年的新雅可是处理盐焗鸡的老手了,看吃客反馈就知道! ✅︎现杀现做; ✅︎古法盐浴老灶慢煨,不柴不过咸;✅︎三吊三晾自然滴脂; 💰门店一只238 到手后,家人朋友聚餐,切…

忘不了新雅这口经典鲜,皮脆肉香回回必点!(新忘不了情歌词)

李亚鹏直播进阶之路,一个好的选品团队有多重要?(李亚鹏团队的直播视频)

这一情形也为他带来了新的挑战,同时也是一个难得的机会,期待李亚鹏团队在2026年能有更大的突破,产品销量实现大卖。他们的成功,也给了我们一个重要的启示:直播带货不仅仅是个人魅力的展示,更是团队和供应链的默契配…

李亚鹏直播进阶之路,一个好的选品团队有多重要?(李亚鹏团队的直播视频)

红外发热护膝真的能暖膝盖吗?揭秘背后的科技原理(红外线自发热护膝真的是在发热?)

红外发热护膝近年来逐渐成为护具市场的新宠。它通过红外线技术,有效促进血液循环,缓解关节疼痛。但你知道其背后的工作原理吗?本文将深入解读,帮你了解如何挑选合适的产品。适合长期受关节炎困扰的上班族,还能助你抵御2026年冬季寒潮。

红外发热护膝真的能暖膝盖吗?揭秘背后的科技原理(红外线自发热护膝真的是在发热?)

情深韵美!中央广播电视总台《2026年春节联欢晚会》完成第三次彩排

黑龙江哈尔滨、浙江义乌、安徽合肥、四川宜宾四地分会场节目首次亮相,与北京主会场完成合排。 主会场节目融汇创新创意表达,让古韵国风以更具互动性、共情力和时代感的方式鲜活登场。哈尔滨分会场融合表演唱、交响乐、芭蕾…

情深韵美!中央广播电视总台《<strong>2026年春节联欢晚会</strong>》完成第三次彩排