ConcurrentHashMap put vs putIfAbsent

JavaDocs diz que,putIfAbsent é equivalente a

<code>   if (!map.containsKey(key)) 
      return map.put(key, value);
   else
      return map.get(key);
</code>

Portanto, se a chave existir no mapa, ela não atualizará seu valor. Isso está correto?

E se eu quiser atualizar um valor de chaves com base em alguns critérios? Diga o tempo de expiração etc.

Isso seria um melhor impl para adicionar e atualizar o cache?

<code>public void AddToCache(T key, V value)
{
   V local = _cache.putifabsent(key, value);

   if(local.equals(value) && local.IsExpired() == false){
     return;
   }
   // this is for updating the cache with a new value
   _cache.put(key, value);
}
</code>

questionAnswers(2)

yourAnswerToTheQuestion