加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 维护插入顺序的并发集合

发布时间:2020-12-15 04:33:47 所属栏目:Java 来源:网络整理
导读:我正在寻找一个可以维持插入顺序的并发列表.有没有人有一些好的推荐? 我从番石榴看一些例如SetFromMap,但在新版本中不推荐使用它们. 谢谢. 解决方法 如果你主要是读取操作,很少有写操作,而你没有太多的元素,那么你可以使用CopyOnWriteArrayList,因为它是一
我正在寻找一个可以维持插入顺序的并发列表.有没有人有一些好的推荐?

我从番石榴看一些例如SetFromMap,但在新版本中不推荐使用它们.

谢谢.

解决方法

如果你主要是读取操作,很少有写操作,而你没有太多的元素,那么你可以使用CopyOnWriteArrayList,因为它是一个List的无锁实现读取操作,这样它几乎不会更快但是它非常昂贵对于每次写入的写操作,它重新构建整个List,以便能够为下一次读操作提供新的只读副本.

在您的情况下,您有许多写入操作和许多要放入集合的元素,CopyOnWriteArrayList显然不适合您.

我建议你使用一个线程安全的队列,你可以在java.util.concurrent包中找到它.根据您的上下文和您的JDK版本,最佳选择可能会发生变化,但如果您不需要特别需要阻塞队列或双端队列而只需要纯粹的集合,那么最佳选择可能是ArrayBlockingQueue,ConcurrentLinkedQueue或LinkedBlockingQueue,但根据此benchmark result(有点老了,LinkedBlockingQueue提供了最好的整体表现.

但是当我们谈论表演时,第一个也是最重要的建议是:始终对目标环境进行测试,这是了解什么是最佳选择的唯一有效方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读