gpt4 book ai didi

Java ConcurrentLinkedQueue 而不是 List?

转载 作者:行者123 更新时间:2023-12-02 03:43:11 25 4
gpt4 key购买 nike

我有一个工作线程,它应该迭代 ArrayList<ConcurrentLinkedQueue> 。其他线程可以添加和删除对象(队列)。但ArrayList不是线程安全的。使用 ConcurrentLinkedQueue<ConcurrentLinkedQueue> 可以吗?而不是ArrayList<ConcurrentLinkedQueue>

最佳答案

如果您询问是否可以安全地迭代 ConcurrentLinkedQueue,那么答案是"is"。 javadoc说:

Iterators are weakly consistent, returning elements reflecting the state of the queue at some point at or since the creation of the iterator. They do not throw ConcurrentModificationException, and may proceed concurrently with other operations. Elements contained in the queue since the creation of the iterator will be returned exactly once.

但是,有些事情可以在 List 上执行,而无法在 Queue 上执行(例如位置获取/设置、插入/删除任意元素。 )如果您的应用程序需要执行这些操作或类似操作,则使用 ConcurrentLinkedQueue 而不是 ArrayList 将不起作用。

另外,请注意 ConcurrentLinkedQueue.size() 是一个 O(N) 操作!

关于Java ConcurrentLinkedQueue 而不是 List?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36610541/

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