问个问题,请问 Java 项目 ThreadLocal 乱飞合理吗

2021-01-28 11:54:44 +08:00
 springmarker

我能理解在有些情况下,比如一些框架或者工具会使用一些奇淫巧技使用 ThreadLocal 传递变量,但是在业务代码里,这种东西可读性很差,你压根不知道是在什么地方使用的,看起来费劲。

最近看公司项目 debug,走到一半直接走不下去了,大量了使用 ThreadLocal,难受。。。

3389 次点击
所在节点    Java
12 条回复
xuanbg
2021-01-28 11:55:52 +08:00
不合理
sdrzlyz
2021-01-28 12:01:14 +08:00
ThreadLocal 也好,Context 也罢,只适合传输少量约定的内容。毕竟是个大黑盒。。。
wolfie
2021-01-28 12:02:05 +08:00
不合理,平时只有在切面级别用到。
估计是想省略重载吧,方法注释怎么写。
no1xsyzy
2021-01-28 12:47:47 +08:00
thread local 的使用需要被封装为 getter/setter,而不是直接使用。
这样可以通过 “哪里调用了 get / set” 来知道哪儿用了。
参考: https://docs.racket-lang.org/reference/parameters.html
whx
2021-01-28 12:53:14 +08:00
不合理。
曾经也是喜欢用 threadlocal,现在能不用就不用。不明确,也不知道什么时候会引发 bug 。
还是方法传参更可靠,明确。
araaaa
2021-01-28 13:04:54 +08:00
threadlocal 应该用作最后手段来使用
araaaa
2021-01-28 13:12:55 +08:00
也就是说有一个静态变量,并且它存在并发访问问题,但是又允许它在不同线程中非共享,那么可以考虑用 threadlocal 了
chendy
2021-01-28 13:34:30 +08:00
乱飞肯定不对,想看看楼主的项目里是怎么个乱飞法
danielmiao
2021-01-28 17:23:21 +08:00
正常情况下,ThreadLocal 的只会在同一个类的可重入函数里当缓冲区用吧。。。难道还能当变量传来传去???
wangyanrui
2021-01-28 17:32:41 +08:00
类内部私有方法,飞不飞无所谓
对外方法,最好别用
securityCoding
2021-01-28 17:51:31 +08:00
不合理,隐式的东西乱飞太容易出问题了
totoro52
2021-01-29 09:22:40 +08:00
同一个公司的吧? TM 公司的项目里 threadlocal 都日穿天了 恶心死了 每次都要去追溯哪里来的 哪里存进去的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/749186

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX