ThreadLocal概念:run()或call()内的任何变量都是线程本地的?
ThreadLocal概念:run()或call()内的任何变量都是线程本地的?
这个问题已经有答案了:
我正在尝试理解Java中的ThreadLocal概念,但有点困惑。
例如,为了定义线程任务,我们可以这样做:
public void run() { int sum = 0; // Code which a thread executes }
那么,如果我们创建了6个线程,每个线程都将拥有自己的本地“sum”变量,对吗?
如果这不是ThreadLocal的概念,那我是否在理解这个概念方面遗漏了什么。
有人能帮我理解吗?
admin 更改状态以发布 2023年5月24日
sum
不是ThreadLocal
变量。
ThreadLocal
是一种工具,它允许在每个线程上存储值。 有关更多详细信息,请参见以下问题:
考虑以下代码:
ThreadLocalsum = new ThreadLocal(); sum.set(15);
那么,当您调用sum.get()
时,您将在调用sum.set(...)
的线程中获得15
,而在其他线程中获得null
。
ThreadLocal
通过维护一个静态的线程/值映射表来实现它。