-
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
使用问题:SheduledExecutorService设置releaseTtlValueReferenceAfterCall时,似乎不太正常 #379
Comments
简单回答:正确使用 当然上面的说明,没什么用,不能解决问题。😁 有用的是,一个极简可运行的复现问题的Demo代码,
设置 在你的业务中,任务应该是 只会一次执行吗? @lylylyly
『确实时不时遇到没清理上下文,引用到错误的上下文的问题』,这是 关于
|
好吧也就是说这个场景不能这么用了…… |
是的。 我在 |
@lylylyly 在上面我第一条回复中,补充了一些说明与资料,可以再看一下 ❤️ |
注意到
TtlCallable
上有一个参数releaseTtlValueReferenceAfterCall
,请问这个参数的设计意图是要解决:某些意料之外情况下复用线程时,旧的
TransmittableThreadLocal
有可能未被正常清除,导致引用到错误的上下文吗?我在issue里似乎没找到有关于
ScheduledExecutorService
的提问。我这里有一个使用场景遇到一个问题,不知道用法对不对,或者有是否有其他最佳实践可用:
这段定时调度的代码只会执行一次,第二次执行会在
TtlCallable
处抛异常终止。解释下
releaseTtlValueReferenceAfterCall
我设置为true
的原因:线上大规模使用
TransmittableThreadLocal
时确实时不时遇到没清理上下文,引用到错误的上下文的问题,设置true
后,这个问题的频率大幅降低几乎不见。然鹅对于
ScheduledExecutor
,Runnable
和Callable
的重用似乎是无法避免的,这与TtlCallable
的设计似乎有冲突,请问对于我的应用场景,本项目有合理的支持方式或者考虑吗?叩谢The text was updated successfully, but these errors were encountered: