6

我们可以在 a 中设置多个对象ThreadLocal吗?

4

3 回答 3

16

一个thread local是当前线程的一个局部变量;所以每个线程都得到一个值。但是该值可以是一个实例,因此您可以在其中放置一个地图,例如,或者一个收集您想要的所有值的自定义类型。

于 2013-01-09T17:19:02.627 回答
6

你可以有多个ThreadLocal,你可以有一个包含多个对象的对象。

例如

final ThreadLocal<Map<String, String>> localProperties = new ThreadLocal<Map<String, String>>() {
     public Map<String, String> initialValue() {
           return new LinkedHashMap<String, String>();
     }
});
于 2013-01-09T17:24:05.450 回答
1

我们可以在单个 Thread 中创建多个 ThreadLocal 对象,并使用特定的 ThreadLocal 对象的get()方法访问它。

实际上,ThreadLocal 有一个名为 ThreadLocalMap 的静态内部类及其自定义的 hashmap,其中该自定义映射中的 key 是 ThreadLocal 对象,value 是要存储的值。

每个线程都持有这个 threadLocalMap 对象的引用。

于 2015-08-26T08:55:43.993 回答