code: private Entry<V> computeIfAbsent(K key) {
      Entry<V> v = map.get(key);
      if (v == null) {
        Entry<V> tmp = entryGetter.apply(key);
        v = map.putIfAbsent(key, tmp);
        if (v == null) {
          v = tmp;
        }
      }
      return v;
    }
docs: This method should be used instead of the
  {@link ConcurrentHashMap#computeIfAbsent(Object, Function)} call to minimize
  thread contention. This method does not require locking for the common case
  where the key exists, but potentially performs additional computation when
  absent.