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

2017-03-31 23:20:35 +08:00
 esolve

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

1576 次点击
所在节点    问与答
5 条回复
leejanfin
2017-04-01 00:01:44 +08:00
个人感觉 从某种程度上来说 区别不大 只是让代码更加优雅一些
SoloCompany
2017-04-01 01:02:29 +08:00
ThreadLocal 本质上是一个全局变量,只不过保证了对每个不同线程的局部性,当然和真正的局部变量有本质上的不同
ThreadLocal 要解决的问题也是全局变量所解决的问题,无法深层次传递参数的时候的一种解决方案
一般而言,对于代码可读性来说
显式传递参数 > 依赖注入 > ThreadLocal or static
q397064399
2017-04-01 07:35:54 +08:00
大项目才能看出来
miaoever
2017-04-01 08:57:42 +08:00
当然不一样。 run() 方法局部变量的生命周期和 Threadlocal 是完全不同的。
esolve
2017-04-03 14:01:34 +08:00
@miaoever 能举个例子吗?想象不出来
譬如函数里的静态局部变量,生命周期和函数里的普通局部变量不同我能理解
但是这是因为函数能调用多次
而线程只能运行一次啊

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

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

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

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

© 2021 V2EX