java - 最高效但线程安全的列表/集合

标签 java list concurrency

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/

相关文章:

Java:如何通过引用传递字节 []?

java - Java 中的部分泛型

python - 如何将一个列表的元素添加到另一个没有括号且没有导入的列表中?

python - 嵌套列表循环

java - 在C++中,静态变量、动态变量和局部变量存储在哪里?在 C 和 Java 中怎么样?

list - lisp 从列表中过滤掉不匹配谓词的结果

java - Spring @Transactional 并发

java - 如何在给定执行时间的情况下每隔固定时间调用方法

java - 用户并发编辑对象的并发问题

java - 从 cucumber 功能生成的步骤发送获取请求