gpt4 book ai didi

Java - ConcurrentLinkedQueue - 轮询所有

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

假设我有 ConcurrentLinkedQueue 类型的类字段。此类的一些方法向该队列提供新元素。还有一些其他方法需要轮询此时队列中的所有元素。

我无法在循环中使用poll(),因为在循环尚未完成时,可能会向此队列提供某些元素。如果新元素的提供速度比我轮询它们的速度快,我认为这甚至可能是一个无限循环。所以我需要某种pollAll()

有什么办法可以实现这个目标吗?也许有适合这个的集合?

最佳答案

如果您可以更改应用程序以使用其中一个 BlockingQueue 实现,则有一种方法 drainTo这似乎正是你想要的。它删除队列的当前内容并将它们传输到目标集合。

有多种BlockingQueue实现;它们都应该是线程安全的。奇怪的是,尽管在我检查的实现中(ArrayBlockingQueueLinkedBlockingQueue),但并没有指定 drainTo 是原子的。

关于Java - ConcurrentLinkedQueue - 轮询所有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34677680/

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