ConcurrentHashMap/ConcurrentMap/Map.compute (original) (raw)
Doug Lea dl at cs.oswego.edu
Fri Dec 7 06:51:50 PST 2012
- Previous message: ConcurrentHashMap/ConcurrentMap/Map.compute
- Next message: ConcurrentHashMap/ConcurrentMap/Map.compute
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 12/07/12 09:22, Brian Goetz wrote:
The following default implementation is atomic because putIfAbsent is already atomic in CM:
computeIfAbsent(K key, K->V fn) { if (!containsKey(key)) putIfAbsent(key, fn.apply(key)); }
Thanks for prod to try recasting this wrt scopes of atomicity. Which, with some further re-work propagates up to plain Map versions as well without need for re-abstraction. I'll try it out and post an update. Basic idea: defaults for function-accepting Map methods are solely in terms of the 4 CM methods, which are in turn non-atomic for non-CM. But implementations can if desired/possible, further widen atomicity scope to include the function call.
-Doug
- Previous message: ConcurrentHashMap/ConcurrentMap/Map.compute
- Next message: ConcurrentHashMap/ConcurrentMap/Map.compute
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the lambda-libs-spec-experts mailing list