InheritableThreadLocal 父子线程值传递

  最近项目中使用 @Async 异步远程调用的时候,发现主线程能拿到 token 值,子线程调用的时候 token 为 null。研究了一番,发现可以直接使用 InheritableThreadLocal 来进行父子线程之间的值传递。为什么 InheritableThreadLocal 可以进行父子线程之间的值传递呢?因为 InheritableThreadLocal 拷贝值的时候,是 深拷贝,在 Threadinit 方法中进行的拷贝,部分源码如下:

  深拷贝:深拷贝是指创建一个新的对象,并递归地复制原始对象中的所有引用类型数据结构,包括内部的对象。深拷贝后的对象与原始对象完全独立,对其中一个对象的修改不会影响另一个对象。

  浅拷贝:浅拷贝是指创建一个新的对象,该对象的内容是原始对象的副本。如果原始对象中包含了引用类型的数据结构(如列表、字典等),浅拷贝只会复制这些引用,而不会复制引用指向的对象本身。因此,原始对象和浅拷贝后的对象会共享一些内部对象的引用,修改其中一个对象的共享部分可能会影响另一个对象。

自我在生存和毁灭的原始欲望中会不断撞击。—— 烟沙九洲

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值