-
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
关于TransmittableThreadLocal使用:只需要使用TransmittableThreadLocal就可以跨线程池传递?是不是不需要进行线程的修饰? #138
Comments
在我的测试Case中,用 |
可以认为后一种是前一种的对用户使用的简化。第3种『修饰线程或者线程池』的效果是『可以做到应用代码 无侵入』。
不行的。
你的测试Case不全、不典型。 『测试Case不全、不典型』的一个可能验证到的方法 是: @yinjihuan |
方便给一个极简的可运行复现问题的Demo仓库吗,这样可以实际看看你写的测试Case? :) @yinjihuan |
链接: https://pan.baidu.com/s/1vh8ncJHcrHCmsiXK5dv7Ow 提取码: mpp4 复制这段内容后打开百度网盘手机App,操作更方便哦 |
传到网盘了
第一行是Controller输出的,用的是tomcat的线程 将RpcContent中ThreadLocal改成TransmittableThreadLocal后再次测试,值可以获取到,并没有对线程进行修饰 |
👍 OK @yinjihuan 初步的原因解释你的Demo里,每次的异步任务 像这样Demo中,每次新线程 来异步执行的方式,在线上大流量并发的生产环境中往往是 不可接受的。 运行出来的任务线程名的示例如下,各不相同:
推荐 梳理一下
|
我再详细测试下 |
没问题了,之前我测过的。 『小伙伴同学们写的 TTL使用场景 与 设计实现解析的文章』里面有2篇文章还是我自己写的,哈哈。 |
我目前测试下来,发现只需要使用
TransmittableThreadLocal
就可以跨线程池传递,疑问是到底要不要进行线程的修饰?或者说,是不是可以不用配合下面的使用三种方式,直接使用
TransmittableThreadLocal
就可以了TransmittableThreadLocal
有3种使用方式:Runnable
和Callable
Java Agent
来修饰JDK
线程池实现类The text was updated successfully, but these errors were encountered: