Java for concurrent navigable maps.
https://docs.oracle.com/en/java/javase/21/docs/api/java.base...
> All Known Implementing Classes: ConcurrentSkipListMap
Balancing binary search trees suffer from lock contention more than skip lists.
Java for concurrent navigable maps.
https://docs.oracle.com/en/java/javase/21/docs/api/java.base...
> All Known Implementing Classes: ConcurrentSkipListMap
Balancing binary search trees suffer from lock contention more than skip lists.
Hm... I guess the argument would be that the various list insertions can be independently synchronized? Certainly lookup is going to be a r/w lock or whatever and basically a wash. I vaguely buy that but would want to see numbers.
But that said, the hash made of the heap due to the variable size nodes and lack of intrusivity is going to have exactly the opposite effect for any high performance implementation. Maybe Java doesn't play in that sandbox, I guess.
There is a locality penalty for lookups, although I don't think this is core to skip-lists, just an impracticality of the Java language and how you can use its standard libraries. The variable size of the nodes is not a problem for the Java heap, due to how compacting garbage collectors work.