有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我正在寻找一个集合,其中有最有效的“添加项”并发操作。Scala或Java很好

我通常:

  • 每次插入100.000个条目
  • 不在乎秩序
  • 仅在没有附加时读取并清除集合。所以不重要

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

我使用此集合来记录性能度量。这就是为什么不偏离太多实际性能应该是最有效的。然而,由于集合的大小可能很大,并且事先不知道,因此它应该有效地应对大小的增加

那么,哪一个收藏最适合使用呢

我目前使用了一个mutable.ListBufferbuffer.synchronized{ ... }环绕append(和clear)操作。我尝试使用带有类似synchronized{ ... }块的var buf: List(scala),但它严重影响了测量


共 (1) 个答案

  1. # 1 楼答案

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

    既然您说它很可能在adds上是单线程的,那么使用CLQ和CAS将是您最好的选择