如果您确定每个线程只有一个条目,并且没有线程迭代/搜索地图,那么为什么需要地图?
您可以使用ThreadLocal
object 代替,它将包含特定于线程的数据。如果您需要保留字符串-对象对,您可以为该对创建一个特殊类,并将其保留在ThreadLocal
字段中。
class Foo {
String key;
Object value;
....
}
//below was your Map declaration
//Map<String, Object> map = ...
//Use here ThreadLocal instead
final ThreadLocal<Foo> threadLocalFoo = new ThreadLocal<Foo>();
...
threadLocalFoo.set(new Foo(...));
threadLocalFoo.get() //returns your object
threadLocalFoo.remove() //clears threadLocal container
有关 ThreadLocals 的更多信息,您可以在ThreadLocal javadocs中找到。