esolve
V2EX  ›  问与答

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

  •  
  •   esolve · Mar 31, 2017 · 2021 views
    This topic created in 3357 days ago, the information mentioned may be changed or developed.

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

    5 replies    2017-04-03 14:01:34 +08:00
    leejanfin
        1
    leejanfin  
       Apr 1, 2017 via iPhone
    个人感觉 从某种程度上来说 区别不大 只是让代码更加优雅一些
    SoloCompany
        2
    SoloCompany  
       Apr 1, 2017
    ThreadLocal 本质上是一个全局变量,只不过保证了对每个不同线程的局部性,当然和真正的局部变量有本质上的不同
    ThreadLocal 要解决的问题也是全局变量所解决的问题,无法深层次传递参数的时候的一种解决方案
    一般而言,对于代码可读性来说
    显式传递参数 > 依赖注入 > ThreadLocal or static
    q397064399
        3
    q397064399  
       Apr 1, 2017 via iPhone
    大项目才能看出来
    miaoever
        4
    miaoever  
       Apr 1, 2017
    当然不一样。 run() 方法局部变量的生命周期和 Threadlocal 是完全不同的。
    esolve
        5
    esolve  
    OP
       Apr 3, 2017
    @miaoever 能举个例子吗?想象不出来
    譬如函数里的静态局部变量,生命周期和函数里的普通局部变量不同我能理解
    但是这是因为函数能调用多次
    而线程只能运行一次啊
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   962 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 20:10 · PVG 04:10 · LAX 13:10 · JFK 16:10
    ♥ Do have faith in what you're doing.