使用Map封装ThreadLocal有什么作用<Map>?

问题描述 投票:0回答:1

私有ThreadLocal> THREAD_LOCAL=new ThreadLocal()<>

1.为了说明区别,我自己封装了ThreadLocal,并使用它的ThreadLocalMap。 2.如何选择合适的数据结构进行编码封装?

java thread-local
1个回答
0
投票

ThreadLocal.ThreadLocalMap
类是ThreadLocal API使用的
内部
类来表示线程局部变量。它具有特殊的属性,使其适合该用例......而不是其他用例。

相比之下

ThreadLocal<Map<String, Object>> THREAD_LOCAL = new ThreadLocal()<>; 

正在声明一个本地线程,其中将包含一个

Map
值。
THREAD_LOCAL
不是地图本身。相反,它表示任何线程都具有这些值之一......并且您可以使用(毫无帮助的命名)
THREAD_LOCAL
实例来访问它。

在时间成熟时,线程本地的 (

Map
) 值将保存在与给定
ThreadLocalMap
关联的
Thread
实例中。但这是一个实现细节。

1.为了说明区别,我自己封装了ThreadLocal,并使用它的ThreadLocalMap。

基本上,这是两件不同的事情。

ThreadLocalMap
保存线程的all 线程本地值。您的
Map
将只是这些值之一。

但你不需要理解

ThreadLocalMap
。这是内部的。以及实施细节。对您的代码不可见。向
ThreadLocal
API 编写代码并忽略幕后发生的事情。 (或者,如果您病态地好奇......请自行下载并阅读源代码。)

2.如何选择合适的数据结构进行编码封装?

不确定你在这里问什么。但您不应该在代码中直接使用或依赖

ThreadLocalMap

© www.soinside.com 2019 - 2024. All rights reserved.