gpt4 book ai didi

Java并发: choose synchronized collection

转载 作者:行者123 更新时间:2023-12-01 17:17:59 24 4
gpt4 key购买 nike

我想同时做接下来的事情:

  1. 在集合末尾添加新项目(经常)
  2. 从集合开始时删除项目(或少数项目)(经常)
  3. 从集合中间删除项目(或少数项目)(很少,通过迭代所有项目发生)

问题:哪个并发收集会给我最好的性能。

编辑:(如何从中间删除)

我将迭代整个集合,找到 begIndex 并删除从 begIndex 开始的 n 个下一个元素。

最佳答案

您描述的数据结构听起来完全像一个队列。 Java 为此提供了 ConcurrentLinkedQueue

  1. 添加新的集合结尾:queue.add,时间复杂度为 O(1)
  2. 删除:queue.poll O(1)
  3. 从任意位置移除:移除 O(n)

更多相关信息

http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ConcurrentLinkedQueue.html

它指出

This implementation employs an efficient "wait-free" algorithm based on one described in Simple, Fast, and Practical Non-Blocking and Blocking Concurrent Queue Algorithms by Maged M. Michael and Michael L. Scott.

关于Java并发: choose synchronized collection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20682229/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com