So... the second thread needs to wait for the GC in order to modify the map concurrently? I mean, it is an optimization for the most common case (single-threaded access), but it imposes a quite high penalty for concurrent access...<p>Although I could imagine a similar &quot;signaling&quot; mechanism, where each thread would periodically read a single snychronized variable, to check if there&#x27;s any additional &quot;re-synchronisation&quot; work it needs to do. But I&#x27;m guessing that CPUs are implemented that way anyways.