V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
springmarker
V2EX  ›  Java

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

  •  
  •   springmarker · 310 天前 · 2528 次点击
    这是一个创建于 310 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    12 条回复    2021-01-29 09:22:40 +08:00
    xuanbg
        1
    xuanbg  
       310 天前
    不合理
    sdrzlyz
        2
    sdrzlyz  
       310 天前
    ThreadLocal 也好,Context 也罢,只适合传输少量约定的内容。毕竟是个大黑盒。。。
    wolfie
        3
    wolfie  
       310 天前
    不合理,平时只有在切面级别用到。
    估计是想省略重载吧,方法注释怎么写。
    no1xsyzy
        4
    no1xsyzy  
       310 天前
    thread local 的使用需要被封装为 getter/setter,而不是直接使用。
    这样可以通过 “哪里调用了 get / set” 来知道哪儿用了。
    参考: https://docs.racket-lang.org/reference/parameters.html
    whx
        5
    whx  
       310 天前 via iPhone
    不合理。
    曾经也是喜欢用 threadlocal,现在能不用就不用。不明确,也不知道什么时候会引发 bug 。
    还是方法传参更可靠,明确。
    araaaa
        6
    araaaa  
       310 天前 via iPhone
    threadlocal 应该用作最后手段来使用
    araaaa
        7
    araaaa  
       310 天前 via iPhone
    也就是说有一个静态变量,并且它存在并发访问问题,但是又允许它在不同线程中非共享,那么可以考虑用 threadlocal 了
    chendy
        8
    chendy  
       310 天前
    乱飞肯定不对,想看看楼主的项目里是怎么个乱飞法
    danielmiao
        9
    danielmiao  
       310 天前
    正常情况下,ThreadLocal 的只会在同一个类的可重入函数里当缓冲区用吧。。。难道还能当变量传来传去???
    wangyanrui
        10
    wangyanrui  
       310 天前 via iPhone
    类内部私有方法,飞不飞无所谓
    对外方法,最好别用
    securityCoding
        11
    securityCoding  
       310 天前
    不合理,隐式的东西乱飞太容易出问题了
    totoro52
        12
    totoro52  
       309 天前
    同一个公司的吧? TM 公司的项目里 threadlocal 都日穿天了 恶心死了 每次都要去追溯哪里来的 哪里存进去的
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   989 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 20:54 · PVG 04:54 · LAX 12:54 · JFK 15:54
    ♥ Do have faith in what you're doing.