Closed LQZYC closed 5 years ago
看了下代码是这里删除了
com.alibaba.ttl.TransmittableThreadLocal.Transmitter#replay
// clear the TTL values that is not in captured
// avoid the extra TTL values after replay when run task
if (!capturedMap.containsKey(threadLocal)) {
iterator.remove();
threadLocal.superRemove();
}
是专门设计的吗?只能捕获TtlRunnable创建前父线程中设置的上下文?
无法获取到parent1对象在父线程设置的值。
代码如果
parent1.set("parent1")
在Runnable ttlRunnable = TtlRunnable.get(task)
初始化之前设置才可以看到。
@LQZYC 是 如你说的。
抓取 父操作的TTL
的值 发生在 TtlRunnable.get
,即在这个操作之后不会传递。
看了下代码是这里删除了
这里删除操作:
是专门设计的吗?只能捕获TtlRunnable创建前父线程中设置的上下文?
是专门设计的。这样整个流程 固定明确,可以方便分析推理。
如果上面说的理解有些困难,可以先看一下关于TTL
的Issue:
question
Tag:
https://github.com/alibaba/transmittable-thread-local/issues?utf8=%E2%9C%93&q=label%3Aquestion
以上代码输出为
无法获取到parent1对象在父线程设置的值。
代码如果
parent1.set("parent1")
在Runnable ttlRunnable = TtlRunnable.get(task)
初始化之前设置才可以看到。