网易首页 > 网易号 > 正文 申请入驻

【293期】京东一面:子线程如何获取父线程 ThreadLocal 值?

0
分享至

点击上方“Java精选”,选择“设为星标”

别问别人为什么,多问自己凭什么!

下方有惊喜,留言必回,有问必答!

每一天进步一点点,是成功的开始...

想要子线程获取父线程中 ThreadLocal 中的值,需要其子类 InheritableThreadLocal 实现。

测试代码如下:

public static void main(String[] args) throws InterruptedException {
Thread parentParent = new Thread(() -> {
ThreadLocal threadLocal = new ThreadLocal<>();
threadLocal.set(1);
InheritableThreadLocal inheritableThreadLocal = new InheritableThreadLocal<>();
inheritableThreadLocal.set(2);

new Thread(() -> {
System.out.println("threadLocal=" + threadLocal.get());
System.out.println("inheritableThreadLocal=" + inheritableThreadLocal.get());
}).start();
}, "父线程");
parentParent.start();
}

运行结果如下:

子线程获取父线程中 ThreadLocal 中的值

原理如下:

首先我们要知道 Thread类维护了两个ThreadLocalMap

跟进 new Thread() 方法

其构造方法调用了init方法, init方法把inheritThreadLocals值设置为了true

继续跟进。

当inheritThreadLocals的值为true并且其父线程的inheritableThreadLocals不为null时, 把其父线程inheritableThreadLocals 赋值给当前线程的inheritableThreadLocals

继续跟进 看看 InheritableThreadLocal 的get() 方法

get()方法没什么好看的,就是ThreadLocal的get()方法。

注意:InheritableThreadLocal 对ThreadLocal 的getMap()方法进行重写

ThreadLocalMap getMap(Thread t) {
//获取线程自己的变量threadLocals,并绑定到当前调用线程的成员变量threadLocals上
return t.threadLocals;

void createMap(Thread t, T firstValue) {
t.threadLocals = new ThreadLocalMap(this, firstValue);
//创建给ThreadLocalMap的table属性赋值,并且将firstValue放在数组首位。
}

createMap方法不仅创建了threadLocals,同时也将要添加的本地变量值添加到了threadLocals中。

InheritableThreadLocal类继承了ThreadLocal类,并重写了childValue、getMap、createMap方法。

其中createMap方法在被调用的时候,创建的是inheritableThreadLocal而不是threadLocals。

同理,getMap方法在当前调用者线程调用get方法的时候返回的也不是threadLocals而是inheritableThreadLocal。

作者:_Louie https://blog.csdn.net/weixin_44912855/article/details/123477206

公众号“Java精选”所发表内容注明来源的,版权归原出处所有(无法查证版权的或者未注明出处的均来自网络,系转载,转载的目的在于传递更多信息,版权属于原作者。如有侵权,请联系,笔者会第一时间删除处理!

------ THE END ------

精品资料,超赞福利!


3000+ 道面试题在线刷,最新、最全 Java 面试题!

期往精选 点击标题可跳转

技术交流群!

最近有很多人问,有没有读者交流群!想知道如何加入?方式很简单,兴趣相投的朋友,只需要点击下方卡片,回复“加群”,即可无套路入交流群!

文章有帮助的话,在看,转发吧!

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
玥儿和爸爸小菲玩转环球影城,奶奶又带去艺术展!孩子脸上露笑容

玥儿和爸爸小菲玩转环球影城,奶奶又带去艺术展!孩子脸上露笑容

奥字侃剧
2026-07-05 13:57:15
玥儿和爸爸小菲玩转环球影城,奶奶又带去艺术展!孩子脸上露笑容

玥儿和爸爸小菲玩转环球影城,奶奶又带去艺术展!孩子脸上露笑容

赏心悦目的我
2026-07-05 15:03:42
“女人两个坎,熬过就高寿”“两坎”是指哪两年?男女都要多关注

“女人两个坎,熬过就高寿”“两坎”是指哪两年?男女都要多关注

芹姐说生活
2026-05-29 20:58:00
当场报仇?姆巴佩破门后疑挑衅对手,做嚣张表情,两队第2次冲突

当场报仇?姆巴佩破门后疑挑衅对手,做嚣张表情,两队第2次冲突

风过乡
2026-07-05 06:52:49
长期吃这种水果,可以延寿45%?Nature:是真的,而且它还能抗癌

长期吃这种水果,可以延寿45%?Nature:是真的,而且它还能抗癌

凤凰卫视
2026-06-25 18:14:11
轮胎出卖安全、OTA偷走动力……谁是上半年的“投诉之王”?

轮胎出卖安全、OTA偷走动力……谁是上半年的“投诉之王”?

马拉车市
2026-07-05 17:43:32
注意!热穹顶杀到北方,华北40℃只是开始,酷暑热浪还在持续加码

注意!热穹顶杀到北方,华北40℃只是开始,酷暑热浪还在持续加码

甜柚叙事
2026-07-05 15:25:12
中考后的悲剧:15岁少年家中身亡

中考后的悲剧:15岁少年家中身亡

教师吧
2026-07-04 16:35:12
世界杯最终排名第17-32:荷兰17 德国18 日本21亚洲最高 佛得角32

世界杯最终排名第17-32:荷兰17 德国18 日本21亚洲最高 佛得角32

画夕
2026-07-04 19:17:09
恭喜!知名港星25岁儿子北大硕士毕业,夫妻俩赴北京观礼满脸骄傲

恭喜!知名港星25岁儿子北大硕士毕业,夫妻俩赴北京观礼满脸骄傲

十级搞笑选手
2026-07-02 18:22:47
同时签下詹姆斯+布朗尼!?骑士!还得是你!!

同时签下詹姆斯+布朗尼!?骑士!还得是你!!

柚子说球
2026-07-05 11:42:47
纯属意外!陈龙8岁儿子狂揽19个冠军,一开始只是去蹭哥哥的课

纯属意外!陈龙8岁儿子狂揽19个冠军,一开始只是去蹭哥哥的课

赏心悦目的我
2026-07-03 16:17:29
NBA夏联:灰熊7人上双37分狂胜雷霆 探花布泽尔首秀15+4+4

NBA夏联:灰熊7人上双37分狂胜雷霆 探花布泽尔首秀15+4+4

醉卧浮生
2026-07-05 06:40:58
阿根廷的世界杯之困:为何总要玩心跳?

阿根廷的世界杯之困:为何总要玩心跳?

篮坛第一线
2026-07-05 01:17:50
出汗就是血脂最好的反馈,出现这5种情况,多是血脂快失控了

出汗就是血脂最好的反馈,出现这5种情况,多是血脂快失控了

周哥一影视
2026-07-05 10:46:11
你受过最大的羞辱是什么?好惨啊!网友:这个倒霉医生是我亲舅舅

你受过最大的羞辱是什么?好惨啊!网友:这个倒霉医生是我亲舅舅

另子维爱读史
2026-07-04 21:38:25
女儿与侄子双双考上985,公婆硬要我拿出50万资助侄子,我:凭什么

女儿与侄子双双考上985,公婆硬要我拿出50万资助侄子,我:凭什么

观观说事
2026-07-05 18:25:03
4-3!狂救5赛点!半决赛诞生,蒯曼创造乒坛奇迹,再战张本美和

4-3!狂救5赛点!半决赛诞生,蒯曼创造乒坛奇迹,再战张本美和

南海浪花
2026-07-05 12:08:22
金融男的三件套,变了

金融男的三件套,变了

叫我娱乐菌
2026-03-30 19:35:53
印度教授叫嚣中印开战帮日本出头,莫迪冷笑:你先答谁打第一枪?

印度教授叫嚣中印开战帮日本出头,莫迪冷笑:你先答谁打第一枪?

萧獻记录风土人情
2026-07-04 15:24:36
2026-07-05 19:11:00
Java精选
Java精选
一场永远也演不完的戏
1796文章数 3859关注度
往期回顾 全部

科技要闻

华为:逻辑折叠将大幅提升麒麟CPU核心频率

头条要闻

《我不是药神》原型抗癌24年 曾吃药"一年吃掉一套房"

头条要闻

《我不是药神》原型抗癌24年 曾吃药"一年吃掉一套房"

体育要闻

姆巴佩点走巴拉圭:巴黎三代左锋传承

娱乐要闻

霉霉婚礼照片泄露 有四人违规

财经要闻

揭秘跨境“对敲”换汇黑产

汽车要闻

方程豹钛9内饰曝光 用上了长联屏设计/下半年上市

态度原创

艺术
家居
旅游
数码
公开课

艺术要闻

看看“馆阁体”鼻祖写的书法,比赵孟頫的字还美,狠狠打脸喷子恶评!

家居要闻

传奇筑 日常诗

旅游要闻

千城胜景|河南罗山:夏荷清韵引客来

数码要闻

支持星闪(NearLink)功能的华为平板/鸿蒙电脑设备清单公布

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版