后使用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块,但我不确定这一点。
在此先感谢您的回复。