首页 > 解决方案 > 具有最快(并发)添加操作的集合

问题描述

我正在寻找一个具有最有效的“添加项目”并发操作的集合。Scala 或 Java 都不错。

我通常:

此外,它应该与多线程一起使用(因此存在并发约束)。但是我需要它在没有并发时最有效:并发安全的设计在没有并发访问时不应该有太大的影响。

我使用这个集合来记录性能测量。这就是为什么不偏向过多的实际性能应该是最有效的。但是,由于集合大小可能很大并且事先不知道,它应该有效地应对大小增加。

那么哪个集合最好用呢?

我目前使用了一个mutable.ListBufferwith buffer.synchronized{ ... }around 追加(和清除)操作。我尝试使用var buf: List具有类似synchronized{ ... }块的(scala),但它严重影响了测量。

标签: javascalacollectionsconcurrency

解决方案


我会说ConcurrentLinkedQueue。这是使用 CAS 的 O(1) 插入。因此,在中等负载下,您可能不会有更快的插入。如果您的负载非常高,您可能需要考虑使用LinkedBlockingQueue

既然您说它可能会在添加时是单线程的,那么使用 CLQ 和 CAS 将是您的最佳选择。


推荐阅读