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

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

  •  
  •   springmarker · 2021-01-28 11:54:44 +08:00 · 3563 次点击
    这是一个创建于 1405 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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