-
Notifications
You must be signed in to change notification settings - Fork 1.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
关于clean extra TTL value的疑问 #134
Comments
@luoxn28 关于为什么 这样的功能或设计 的 原因,简单说明解释是:
否则系统中所有的一大把的
更展开的说明如下 (
|
谢谢回复~ 你说的这些我是理解的,
使用 我当时是看到 |
你说得对。❤️ 这样的功能或设计,
这个Issue 先Close了。 ❤️ |
您好,看到clean extra TTL value这块逻辑,有个疑问,特请教下,谢谢。
疑问点:
从目前transmittable-thread-local的TtlRunnable实现来看,在TtlRunable run时,会以TtlRunnable.get时间点获取的captured(类似TTL快照)为准,holder中不在captured的先移除,在的会被替换。
holder中不在captured的先移除,这样会导致当前线程之前set过的TransmittableThreadLocal变量数据丢失,如果父线程中也存在该TransmittableThreadLocal变量但是没set过?
这里我有个疑问,如果当前线程holder中有一个TransmittableThreadLocal(captured中没有),并且当前线程之前也set过该TransmittableThreadLocal,执行到上述逻辑时,当前线程的TransmittableThreadLocal变量数据丢失,示例代码如下:
输出结果为:
从目前transmittable-thread-local的TtlRunnable实现来看,在TtlRunable run时,会以TtlRunnable.get时间点获取的captured(类似TTL快照)为准,holder中不在captured的先移除,在的会被替换。这样处理的话,相当于针对TransmittableThreadLocal来说,都是以captured为最高优先级了。
这样来看,TransmittableThreadLocal在TtlRunnable中不像一个ThreadLocal,是一个父线程Transmittable上下文的映射(个人理解),而在普通Runable中才像一个ThreadLocal。
类似issue:#90 #127
The text was updated successfully, but these errors were encountered: