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提供了最好的整体表现. 但是当我们谈论表演时,第一个也是最重要的建议是:始终对目标环境进行测试,这是了解什么是最佳选择的唯一有效方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |