何时ConcurrentSkipListSet有用?

and*_*and 78 java collections concurrency data-structures

我刚刚在Java 6 API上看到了这个数据结构,我很好奇它何时会成为一个有用的资源.我正在攻读scjp考试,虽然我已经看过提到它的模拟考试题目,但我并没有在Kathy Sierra的书中看到它.

Tod*_*lin 163

当您需要一个可由多个线程访问的已排序容器时,ConcurrentSkipListSetConcurrentSkipListMap非常有用.这些本质上是并发代码的TreeMap和TreeSet的等价物.

JDK 6的实现基于 Maged Michael在IBM的高性能动态无锁散列表和基于列表的集合,这表明您可以使用比较和交换(CAS)操作以原子方式对跳过列表实施大量操作.这些是无锁的,因此您synchronized在使用这些类时不必担心(对于大多数操作)的开销.

目前在Java中没有基于Red-Black树的并发Map/Set实现.我仔细阅读了一些 文章,发现一些论文显示并发RB树的性能优于跳过列表,但很多这些测试都是使用事务性内存完成的,目前在任何主要架构的硬件上都不支持.

我假设JDK的人员在这里使用跳过列表,因为实现是众所周知的,因为使其无锁是简单和便携的(使用CAS).如果有人关心澄清,请做.我很好奇.