V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
esolve
V2EX  ›  问与答

Java : Threadlocal 和 run() 方法里的 局部变量有什么区别

  •  
  •   esolve · 2017-03-31 23:20:35 +08:00 · 1567 次点击
    这是一个创建于 2590 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Java: Threadlocal 和 run() 方法里的 局部变量有什么区别?

    5 条回复    2017-04-03 14:01:34 +08:00
    leejanfin
        1
    leejanfin  
       2017-04-01 00:01:44 +08:00 via iPhone
    个人感觉 从某种程度上来说 区别不大 只是让代码更加优雅一些
    SoloCompany
        2
    SoloCompany  
       2017-04-01 01:02:29 +08:00
    ThreadLocal 本质上是一个全局变量,只不过保证了对每个不同线程的局部性,当然和真正的局部变量有本质上的不同
    ThreadLocal 要解决的问题也是全局变量所解决的问题,无法深层次传递参数的时候的一种解决方案
    一般而言,对于代码可读性来说
    显式传递参数 > 依赖注入 > ThreadLocal or static
    q397064399
        3
    q397064399  
       2017-04-01 07:35:54 +08:00 via iPhone
    大项目才能看出来
    miaoever
        4
    miaoever  
       2017-04-01 08:57:42 +08:00
    当然不一样。 run() 方法局部变量的生命周期和 Threadlocal 是完全不同的。
    esolve
        5
    esolve  
    OP
       2017-04-03 14:01:34 +08:00
    @miaoever 能举个例子吗?想象不出来
    譬如函数里的静态局部变量,生命周期和函数里的普通局部变量不同我能理解
    但是这是因为函数能调用多次
    而线程只能运行一次啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   770 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 21:20 · PVG 05:20 · LAX 14:20 · JFK 17:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.