,如果我发现了以下错误HashMap中抛出ConcurrentModificationException的
Map<String, Object> foodData = new HashMap<String, Object>();
foodData.put("penguin", 1);
foodData.put("flamingo", 2);
Map<String,Object> synchronizedFoodData = Collections.synchronizedMap(foodData);
for(String key: synchronizedFoodData.keySet())
synchronizedFoodData.remove(key);
问题: - 为什么此代码抛出一个ConcurrentModificationException
在运行,而与ConcurrentHashMap
相同的代码没有: -
Map<String, Object> foodData = new ConcurrentHashMap<String, Object>();
foodData.put("penguin", 1);
foodData.put("flamingo", 2);
Map<String,Object> synchronizedFoodData = Collections.synchronizedMap(foodData);
for(String key: synchronizedFoodData.keySet())
synchronizedFoodData.remove(key);
为什么它没有显示任何错误。 林期待的内部工作有一些明显的例子: -
我仍然使用Collections.synchronizedMap(foodData)手段;仍然有错误,应该不是这种情况。
- 我的第一个代码有什么问题?
- 然后HashMap和Collections.synchronizedMap都抛出错误,所以何时使用synchronizedMap?
从ConcurrentHashMap中的文档:“他们不抛出ConcurrentModificationException” –
也许是因为'ConcurrentHashMap'是'synchronizedMap',看到这个链接HTTPS ://examples.javacodegeeks.com/java-basics/java-map-example/ – AsfK
@EduardoYáñezParareda问题已更改。 –