@Override
  public synchronized boolean replace(K key, V oldValue, V newValue) {
    V existingValue = map.get(key);
    if (existingValue != null && existingValue.equals(oldValue)) {
      put(key, newValue);
      return true;
    }
    return false;
  }
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