ConcurrentSkipListSet和重新排序(java)

vdM*_*ele 5 java sorting concurrency list

我使用的是ConcurrentSkipListSet,显然是通过多个线程访问的.现在,底层对象的compareTo方法使用的值会随时间发生变化.因此,我想"更新"列表的顺序(通过使用它或类似的东西).

但是,java.util.Collections.sort(list)不起作用,只是重建列表可能太慢了(并且会破坏整个并发性).我应该看看还有其他解决方案吗?

它不必导致最佳排序(无论如何,并发和更改值几乎不可能).只要任何删除/添加调用保持线程证明(在排序时重建列表时这将是一个真正的问题),接近最佳就足够了.

Wil*_*ill 7

每次编辑项目以使其排序顺序可能发生变化时,您必须将其从列表中删除,然后更改密钥然后重新插入.


Cliff博士点击Azul Systems有一个非常好的演示文稿,介绍了如何使用墓碑等进行无锁哈希表.如果你要编写自己的跳过列表/树来将项目重新排序为单个 - 并且希望更快 - 操作,那么你也可以使用这种无锁路由.一定要分享你的结果:)