gpt4 book ai didi

java - 用于频繁更新的 CopyOnwriteArrayList 替代方案

转载 作者:搜寻专家 更新时间:2023-11-01 02:31:48 28 4
gpt4 key购买 nike

请随时指正。

场景构建需要时间排序的市场数据缓存(即按添加元素的时间排序)。缓存会有很多更新。

逻辑表明列表是一个合乎逻辑的选择,因为索引是免费且容易执行的事情,例如 getOldestElem list.get(0);二分查找等

这个缓存将被多个线程使用,显然读取和更新指向 CopyOnWriteArrayList 的缓存。 (Javadoc表示这不适合大尺寸和频繁更新)

我正在寻找替代方案或更好的主意?

最佳答案

如果现有记录很少(或从不)更新,那么“频繁更新”就是频繁添加,您可以使用时间排序通过分离新旧元素来优化数据结构。

例如,您可以将缓存分段为多个 CopyOnWriteArrayList 对象,每个对象包含不超过固定数量的元素,并且每个分段包含数据的时间子范围。频繁添加会增加最后一个段,直到达到最大大小,此时您将为后续更新附加一个新段。通过保持最大段大小足够小,您可以避免 CopyOnWriteArrayList 的性能问题。您应该将实现细节隐藏在您自己的 List 类中。


编辑:移除旧元素同样只会改变一个片段:最旧的片段。

关于java - 用于频繁更新的 CopyOnwriteArrayList 替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7646326/

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