後使用GET()我有一個代碼段是這樣的:迭代的ConcurrentHashMap
private final Map<String, Information> infoMap = new ConcurrentHashMap<String, Information>();
synchronized (infoMap) {
for (final String nameAndVersion : infoMap.keySet()) {
final Information info = infoMap.get(nameAndVersion);
final String name = info.getName();
names.add(name);
}
}
我的問題是:是否有必要使用同步塊如圖所示,如從鍵集中的動作() get()不是原子的(因此映射可以在一次調用和下一次調用之間更新,因爲ConcurrentHashMap對於每個單獨的調用只是線程安全的)?
是否應該迭代EntrySet以確保完整的迭代器被構造?
我相信如果keySet()和get()被調用,需要synchonized塊,但我不確定這一點。
在此先感謝您的回覆。