&gt; So... the second thread needs to wait for the GC in order to modify the map concurrently?<p>No nobody needs to wait for a GC, but we use the same mechanism that the GC does.<p>&gt; Although I could imagine a similar &quot;signaling&quot; mechanism, where each thread would periodically read a single synchronised variable<p>And that&#x27;s how the GC already works. Except instead of a variable normally a &#x27;test&#x27; instruction is used on a page of memory, and instead of setting the variable, the permission on the page are changed triggering a page fault.