public synchronized V computeIfAbsent(K key, Function<? super K, ? extends V> valueMapper) {
        V value = cache.get(key);
        if (value == null) {
            value = valueMapper.apply(key);
            if (value != null) {
                put(key, value);
            }
        }
        return value;
    }
An asynchronous LRU cache that supports asynchronous value computation.

@param <K> key type
@param <V> value type, NOTE: V must not override equals and hashCode
s3stream/src/main/java/com/automq/stream/s3/cache/AsyncLRUCache.java