ConcurrentSkipListSet e ConcurrentSkipListMap sono utili quando è necessario un contenitore ordinato a cui accedono più thread. Questi sono essenzialmente gli equivalenti di TreeMap e TreeSet per il codice concorrente.
L'implementazione per JDK 6 si basa su tabelle hash dinamiche senza blocco ad alte prestazioni e set basati su elenchi di Maged Michael presso IBM, il che dimostra che è possibile implementare molte operazioni sugli elenchi di salto in modo atomico utilizzando operazioni di confronto e scambio (CAS) . Questi sono privi di blocchi, quindi non devi preoccuparti del sovraccarico synchronized
(per la maggior parte delle operazioni) quando usi queste classi.
Attualmente non esiste in Java un'implementazione simultanea Map / Set basata su albero rosso-nero . Ho esaminato un po 'la letteratura e ho trovato un paio di documenti che mostravano alberi RB concorrenti che superavano le liste di salto, ma molti di questi test sono stati eseguiti con la memoria transazionale , che al momento non è supportata nell'hardware su nessuna delle principali architetture.
Presumo che i ragazzi di JDK abbiano scelto un elenco di salto qui perché l'implementazione era ben nota e perché renderlo privo di blocchi era semplice e portatile (usando CAS). Se qualcuno vuole chiarire, per favore fallo. Sono curioso.