具有最快(并发)添加操作的集合

时间:2018-05-11 14:45:50

标签: java scala collections concurrency

我正在寻找一个最有效的系列"添加项目"并发操作。 Scala或Java很好。

我通常:

  • 一次插入100.000个条目
  • 不关心订单
  • 仅在没有追加时才读取和清除集合。所以不重要

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

我使用此集合来记录性能测量。这就是为什么最好不要偏向太多实际性能的原因。但是,由于收集尺寸可能很大而且事先不知道,因此应该有效地应对尺寸增加。

那么最好使用哪个系列?

我目前使用mutable.ListBufferbuffer.synchronized{ ... }进行追加(和清除)操作。我尝试使用类似var buf: List块的synchronized{ ... }(scala),但严重影响了测量结果。

1 个答案:

答案 0 :(得分:2)

我会说CurrentLinkedQueue。使用CAS进行O(1)插入。因此,在适度负载下,您可能不会有更快的添加。如果您的负载非常高,您可能需要考虑LinkedBlockingQueue

由于您说它可能会在添加时出现单线程,因此使用CLQ和CAS将是您的最佳选择。