私有ThreadLocal
1.为了说明区别,我自己封装了ThreadLocal,并使用它的ThreadLocalMap。 2.如何选择合适的数据结构进行编码封装?
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
。