我们需要同步这里private static Map
对象如果多个线程使用getObject
方法,先用给定的密钥检查上map
值,如果没有找到,然后把新的对象使用该密钥对map
对象。如果多个线程使用公共方法读取特定键的值,我们是否需要在一个私有静态Map对象上进行同步?
private static Map<String, Object> map = new HashMap<>();
public Object getObject(String key){
Object obj = map.get(key);
if(obj == null){
obj = new Object();
map.put(key, obj);
}
return obj;
}
感谢您的回答,我有一个关于putIfAbsent()的问题,在这里我们需要传递一个新创建的对象,这是不好的,我想创建对象只有当它在地图中丢失。 –
'map.computeIfAbsent(key,k - > new Object())'。 –
谢谢这会帮助我。 –