@Override
  public synchronized void putAll(Map<? extends K, ? extends V> m) {
    HashMap<K, V> tmp = new HashMap<>(map);
    tmp.putAll(m);
    map = Collections.unmodifiableMap(tmp);
  }
A copy on write hash map.

Note that the entryKey and keySet of this map are unmodifable. Should be easy to make them
modifiable at a future time.
geode-core/src/main/java/org/apache/geode/internal/util/concurrent/CopyOnWriteHashMap.java