美文网首页
ThreadLocal实战(二:InheritableThrea

ThreadLocal实战(二:InheritableThrea

作者: 但时间也偷换概念 | 来源:发表于2018-08-26 18:39 被阅读0次

一:InheritableThreadLocal解决了什么问题?

上文提到了ThreadLocal,但是ThreadLocal有个明显的问题,就是它无法解决父子线程传递问题

于是介绍一种新的ThreadLocal:InheritableThreadLocal

来看看测试用例:

Test

可以看到我在主线程set了一个值,在子线程拿不到它的值,当然,他们是不同的线程,可是对于上下文来说,很多场景是依赖一个共同的限界,而不希望创建子线程就丢掉这个环境,于是我们可以使用InheritableThreadLocal.

二:InheritableThreadLocal使用方式和源码

InheritableThreadLocal用法

如图,可见和上一篇ThreadLocal的用法介绍没什么两样,就是换了个api。

那么它是如何实现父子线程同步的呢。

Thread构造函数

Thread构造里调用了init方法

init方法

init方法内部实现如上图,它会判断inheritableThreadLocals是否为空,如果不空,就拷贝父线程的ThreadLocalMap给子线程。就这么简单,具体代码大家可以自己去研究

项目代码:https://github.com/Spring5945/Concurrent

相关文章

网友评论

      本文标题:ThreadLocal实战(二:InheritableThrea

      本文链接:https://www.haomeiwen.com/subject/vsnoiftx.html