当我们使用它时,线程本地是啥? [复制]

Posted

技术标签:

【中文标题】当我们使用它时,线程本地是啥? [复制]【英文标题】:What is thread local when we use this? [duplicate]当我们使用它时,线程本地是什么? [复制] 【发布时间】:2012-05-24 07:56:41 【问题描述】:

可能重复:When and how should I use a ThreadLocal variable?

我对本地线程的了解是。

1) Thread Local 必须声明为 public static final

2) Thread Local 是当前线程的局部变量。

【问题讨论】:

【参考方案1】:

不需要公开

但它本质上是一个 Map,您只能将当前线程作为键获取,并且当尚未设置值时它会自动初始化

这实现了线程本地存储,因此您可以拥有“公共静态”变量而无需对其进行同步

【讨论】:

【参考方案2】:

在您的陈述中找不到问题,但让我试试:

1) Thread Local 必须声明为 public static final 。

不是真的,事实上ThreadLocal 可以是私有的,不必是static 并且可以是非最终的。不知道你在哪里见过这样的要求。

2) Thread Local 是当前线程的局部变量。

正确。您可以想象ThreadLocal 是一个映射,其中键是线程,值是实际变量。但它的实现方式要好得多。

【讨论】:

【参考方案3】:

Threadlocal 为每个线程创建您指定类型的单独实例(它是通用的)。您可以简单地使用它的 get() 方法来访问它。此方法将始终返回当前线程的值。

【讨论】:

以上是关于当我们使用它时,线程本地是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

当我们已经锁定它时,如何再次锁定折返锁有用? [重复]

CUDA:每个多处理器的线程数和每个块的线程数的区别是啥? [复制]

mysql复制基本原理流程是啥?

通过扩展 Thread 类或实现 Runnable 来创建线程更可取的是啥? [复制]

ThreadLocal 概念:run() 或 call() 中的任何变量都不是本地线程吗? [复制]

java中多线程地并发运行是啥意思?有啥作用.好处?