这是一小段代码
public Map<String,Object> findTruckParts(Map<String,Object> output){
Map<String,Object>findPartsMap = null;
NewFooInstance newFooInstance = new NewFooInstance();
findPartsMap = PartBuilder.buildPartsOutputMap(output, outputMap);
newFooInstance.buildItem(findPartsMap);
return findPartsMap;
}
outputMap 是一个新的 hashMap,输出是带有一些备件信息的 hashmap。 buildItem 调用传递 findPartsMap 的其他一些私有(private)方法。
public class NewFooInstance{
buildItem(Map<String,Object> partsMap){
checkPartsValidity(partsMap, fetchMapOfValidParts());
}
checkPartsValidity(Map<String,Object> partsMap,Map<String,Object> partsMap){
//partsMap = update partsMap with missing items fetched from list of valid parts
}
}
上面的线程安全吗?由于所有映射对于各自的方法都是本地的,所以我的假设是这是线程安全的。
编辑:我稍微修改了方法。获取一张 map 并返回另一张 map 。所以,我的问题是,返回的这张 map 是线程安全的吗?它对于该方法来说是本地的,所以我认为这将是线程安全的(如果该映射丢失其监视器,其他线程进入将无法更改其值),但是,因为该映射正在其他类和其他方法中进行修改,该映射的方法局部性是否可以跨不同的类/方法延续并确保线程安全?
最佳答案
答案是“不”,因为HashMap
本身不是线程安全的。
考虑使用线程安全的 Map 实现,例如 ConcurrentHashMap .
关于java - 这种传递和修改 HashMap 的方式是线程安全的吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16822476/