public RAMQueueEntry putIfAbsent(BlockCacheKey key, RAMQueueEntry entry) {
      AtomicBoolean absent = new AtomicBoolean(false);
      RAMQueueEntry re = delegate.computeIfAbsent(key, k -> {
        // The RAMCache reference to this entry, so reference count should be increment.
        entry.getData().retain();
        absent.set(true);
        return entry;
      });
      return absent.get() ? null : re;
    }
Return the previous associated value, or null if absent. It has the same meaning as
{@link ConcurrentMap#putIfAbsent(Object, Object)}
hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.java