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>();
}
});