V (T key) { SofterReference<ConcurrentMap<T, V>> ref = myCache; ConcurrentMap<T, V> map = ref == null ? null : ref.get(); if (map == null) { map = new ConcurrentHashMap<>(); myCache = new SofterReference<>(map); } return map.computeIfAbsent(key, myValueProvider); }