Java 有大量不同的 Collections 是为并发和线程安全而设计的,我不知道该选择哪一个来满足我的情况。
多个线程可能正在调用 .add()
和 .remove()
, 我会经常用 List<T> newList = new ArrayList<T>(concurrentList)
之类的东西复制这个列表.我永远不会遍历并发列表。
我想到了类似 CopyOnWriteArrayList
的事情,但我读到它可能非常低效,因为它每次修改时都会复制自己。我希望在安全和效率之间找到一个好的折衷方案。
这种情况的最佳列表(或集合)是什么?
最佳答案
正如@SpiderPig 所说,List
的最佳情况是一个不可变的单链表。
但是,看看这里所做的事情,List
是不必要的(@bhspencer 的评论)。 ConcurrentSkipListSet
的工作效率最高 (@augray)。
This Related Thread已接受的答案提供了有关不同并发集合的优缺点的更多见解。
关于java - 最高效但线程安全的列表/集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30700388/