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

【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.

相关推荐
热点推荐
沙特和中国签大单,天文数字金额震动全球,一锤定音挖到美元命脉

沙特和中国签大单,天文数字金额震动全球,一锤定音挖到美元命脉

睿鉴历史
2024-08-13 22:00:03
身份证复印时,记得在边上放一枚硬币,好多人还不懂,看完涨知识

身份证复印时,记得在边上放一枚硬币,好多人还不懂,看完涨知识

猫小狸同学
2024-11-13 20:00:06
前瞻|世预赛巴拉圭0-1阿根廷:巴拉圭攻弱守强,阿根廷难指望梅西

前瞻|世预赛巴拉圭0-1阿根廷:巴拉圭攻弱守强,阿根廷难指望梅西

体育世界
2024-11-14 16:04:37
明年开始,在职和退休都将迎来一个重要变化,看看对你有啥影响?

明年开始,在职和退休都将迎来一个重要变化,看看对你有啥影响?

阿伧说事
2024-11-13 09:14:36
深圳楼市,继续狂飙!

深圳楼市,继续狂飙!

地产观点
2024-11-14 08:15:02
三星杯16强战:中国队前四盘全胜,八强至少占据六个席位

三星杯16强战:中国队前四盘全胜,八强至少占据六个席位

懂球帝
2024-11-14 16:38:18
头号种子爆冷出局!决胜时刻被碾压,王祉怡0-2不敌韩国三单!

头号种子爆冷出局!决胜时刻被碾压,王祉怡0-2不敌韩国三单!

钉钉陌上花开
2024-11-14 11:48:32
程晓玥富二代人设疑似坍塌,租三套房子住,自己买的一套一直装修

程晓玥富二代人设疑似坍塌,租三套房子住,自己买的一套一直装修

风谈笔录
2024-11-14 07:30:27
深圳16岁男孩跳桥自杀,路人女孩热吻拯救:没人要你,我要你!

深圳16岁男孩跳桥自杀,路人女孩热吻拯救:没人要你,我要你!

书画艺术收藏
2024-11-12 19:45:03
留守儿童17字作文走红,被橡皮擦掉的3个字,值得一个“满分”

留守儿童17字作文走红,被橡皮擦掉的3个字,值得一个“满分”

熙熙说教
2024-11-13 17:22:02
90后夫妻喝了5年桶装水,双双确诊肝癌,提醒:无知害人不浅

90后夫妻喝了5年桶装水,双双确诊肝癌,提醒:无知害人不浅

古今历史记
2024-08-12 11:49:24
乳山“11元网拍海景房”已完成过户 420多元契税由拍卖公司承担

乳山“11元网拍海景房”已完成过户 420多元契税由拍卖公司承担

红星新闻
2024-11-13 14:32:31
杨紫“带套试戏”后续:已取证,男方被爆承认,牵连多位女星

杨紫“带套试戏”后续:已取证,男方被爆承认,牵连多位女星

阿凫爱吐槽
2024-11-14 16:57:31
杨健、杨坤,同日被查

杨健、杨坤,同日被查

新京报
2024-11-14 15:14:42
空气炸锅是厨房杀手?!你们对它的危险程度一无所知……

空气炸锅是厨房杀手?!你们对它的危险程度一无所知……

新欧洲
2024-11-07 18:13:09
A股:今日,释放了两个信号!股市尾声将至?

A股:今日,释放了两个信号!股市尾声将至?

蜉蝣说
2024-11-14 16:15:24
央视力挺!名字招牌被连夜摘下,理发师晓华也走上李子柒“老路”

央视力挺!名字招牌被连夜摘下,理发师晓华也走上李子柒“老路”

白面书誏
2024-11-14 06:20:02
上海南北高架突发!两车碰擦致一车侧翻,车内人员从天窗脱困

上海南北高架突发!两车碰擦致一车侧翻,车内人员从天窗脱困

环球网资讯
2024-11-14 15:12:10
网传“重庆15岁女孩遭母亲男友砍伤十多处”,警方通报

网传“重庆15岁女孩遭母亲男友砍伤十多处”,警方通报

界面新闻
2024-11-14 10:45:12
火箭老板开心了,不仅因为击沉快船喜迎三连胜,更因为以下几点!

火箭老板开心了,不仅因为击沉快船喜迎三连胜,更因为以下几点!

田先生篮球
2024-11-14 15:36:28
2024-11-14 19:16:49
Java精选
Java精选
一场永远也演不完的戏
1583文章数 3853关注度
往期回顾 全部

科技要闻

官宣!极氪领克合并,吉利走向大整合

头条要闻

违建20多年的菜场未获批文又加一层 城管部门介入调查

头条要闻

违建20多年的菜场未获批文又加一层 城管部门介入调查

体育要闻

微信第一控卫哈利伯顿,是数据刷子吗?

娱乐要闻

娜扎张云龙恋情曝光!甜蜜细节被扒

财经要闻

合新铁路材料以次充好?记者追访被袭击

汽车要闻

七块屏幕四座布局 仰望U7中式百万座舱

态度原创

数码
艺术
旅游
手机
公开课

数码要闻

华硕注册 2 款 AMD“B850E”主板,实际推出可能较低

艺术要闻

故宫珍藏的墨迹《十七帖》,比拓本更精良,这才是地道的魏晋写法

旅游要闻

山西公布2024年全省乡村旅游重点村镇名单

手机要闻

OPPO Reno 13 系列手机开启预约,同期新品含 Pad 3 平板

公开课

一块玻璃,如何改变人类世界?

无障碍浏览 进入关怀版