RFR: 8202184: Reduce time blocking the ClassSpecializer cache creating SpeciesData
Peter Levart
peter.levart at gmail.com
Wed Apr 25 09:07:47 UTC 2018
On 04/25/2018 10:06 AM, Claes Redestad wrote:
> Besides, CHM.computeIfAbsent has a non-synchronizing fast-path for
> when the key exists,
> lines 1731-1734:
>
> else if (fh == h // check first node without acquiring
> lock
> && ((fk = f.key) == key || (fk != null &&
> key.equals(fk)))
> && (fv = f.val) != null)
> return fv;
Sorry, you're (almost) right! I confused it with CHM.compute()...
The almost part is that lock is avoided only when the match is found in
the 1st linked node of the bucket. If there is a hash collision (very
unlikely) and the entry is in a 2nd or subsequent node in the list, the
lock is still used. So there's almost no locks used... And if there's no
hot contention going on, there's no need for prefacing with .get().
Regards, Peter
More information about the core-libs-dev
mailing list