Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ThreadLocal中的多个对象_Java_Multithreading_Thread Local - Fatal编程技术网

Java ThreadLocal中的多个对象

Java ThreadLocal中的多个对象,java,multithreading,thread-local,Java,Multithreading,Thread Local,我们可以在线程局部中设置多个对象吗?线程局部是当前线程的局部变量;所以每个线程只得到一个值。但是该值可以是一个实例,因此您可以在其中放置一个映射,例如,或一个收集所有所需值的自定义类型。您可以有多个ThreadLocal,也可以有一个包含多个对象的对象 e、 g final ThreadLocal localProperties=new ThreadLocal(){ 公共映射初始值(){ 返回新的LinkedHashMap(); } }); 我们可以在单个线程中创建多个ThreadLocal对象

我们可以在
线程局部中设置多个对象吗?

线程局部是当前线程的局部变量;所以每个线程只得到一个值。但是该值可以是一个实例,因此您可以在其中放置一个映射,例如,或一个收集所有所需值的自定义类型。

您可以有多个
ThreadLocal
,也可以有一个包含多个对象的对象

e、 g

final ThreadLocal localProperties=new ThreadLocal(){
公共映射初始值(){
返回新的LinkedHashMap();
}
});

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

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


每个线程都包含此threadLocalMap对象的引用。

不在同一个线程上,您不能:-)您可以给出一个示例,说明您正在尝试做什么以及遇到什么问题吗?仅用于学术目的。我想知道我们是否可以在ThreadLocal中设置多个对象,以便以后检索它。我不想把地图用在那个目的上!您可以在Javadoc中看到set()只设置一个对象,get()只获取一个对象,重要的是要认识到,在ThreadLocal中使用任何类型的集合都可能加剧与ThreadLocal相关的内存泄漏/使用。重要的是要记住,在ThreadLocal中使用任何类型的集合都可能加剧与ThreadLocal相关的内存泄漏/使用
final ThreadLocal<Map<String, String>> localProperties = new ThreadLocal<Map<String, String>>() {
     public Map<String, String> initialValue() {
           return new LinkedHashMap<String, String>();
     }
});