ConcurrentHashMap put vs putIfAbsent

JavaDocs sagt, dass,putIfAbsent ist äquivalent zu

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

Wenn der Schlüssel in der Karte vorhanden ist, wird sein Wert nicht aktualisiert. Ist das richtig?

Was ist, wenn ich einen Schlüsselwert basierend auf bestimmten Kriterien aktualisieren möchte? Sagen Sie Ablaufzeit usw.

Wäre dies ein besseres Werkzeug zum Hinzufügen und Aktualisieren des Caches?

<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>

Antworten auf die Frage(2)

Ihre Antwort auf die Frage