ConcurrentSkipListSet und ConcurrentSkipListMap sind nützlich, wenn Sie einen sortierten Container benötigen, auf den mehrere Threads zugreifen. Dies sind im Wesentlichen die Entsprechungen von TreeMap und TreeSet für gleichzeitigen Code.
Die Implementierung für JDK 6 basiert auf dynamischen, sperrfreien Hochleistungs-Hash-Tabellen und listenbasierten Sets von Maged Michael bei IBM. Dies zeigt, dass Sie viele Operationen auf Überspringlisten atomar mithilfe von Vergleichs- und Auslagerungsoperationen (CAS) implementieren können . Diese sind sperrenfrei, sodass Sie sich synchronized
bei der Verwendung dieser Klassen keine Gedanken über den Overhead (für die meisten Vorgänge) machen müssen.
Derzeit gibt es in Java keine auf Rot-Schwarz-Bäumen basierende gleichzeitige Map / Set-Implementierung. Ich habe ein wenig in der Literatur nachgesehen und ein paar Artikel gefunden , in denen gleichzeitig RB-Bäume besser als Sprunglisten waren, aber viele dieser Tests wurden mit Transaktionsspeicher durchgeführt , der derzeit auf keiner größeren Architektur in Hardware unterstützt wird.
Ich gehe davon aus, dass die JDK-Leute hier eine Überspringliste erstellt haben, weil die Implementierung bekannt war und weil es einfach und portabel war, sie sperrfrei zu machen (mit CAS). Wenn jemand etwas klären möchte, tun Sie dies bitte. Ich bin neugierig.