gpt4 book ai didi

java - ConcurrentSkipListSet 和重新排序 (java)

转载 作者:搜寻专家 更新时间:2023-10-31 19:34:54 24 4
gpt4 key购买 nike

我正在使用一个 ConcurrentSkipListSet,它显然是通过多个线程访问的。现在,底层对象的 compareTo 方法使用的值会随着时间的推移而改变。因此,我想“更新”列表的顺序(通过求助它或类似的东西)。

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

它不一定会导致最佳排序(这对于并发性和不断变化的值来说几乎是不可能的)。接近最优就足够了,只要任何删除/添加调用保持线程安全(这在排序时重建列表时将是一个真正的问题)。

最佳答案

每次您编辑一个项目时,它的排序顺序可能会发生变化,您必须从列表中删除它然后更改键,然后重新插入它。


Azul Systems 的 Cliff Click 博士有一个 very nice presentation他们如何使用墓碑等进行无锁哈希表。如果您打算编写自己的跳过列表/树以将项目重新排序为单个操作(希望速度更快),那么您也可以采用这种无锁路线。并确保分享您的结果:)

关于java - ConcurrentSkipListSet 和重新排序 (java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8133416/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com