2

我想升级到 apache.commons.collections4,但有些类 asCircularFifoBufferUnboundedFifoBuffer被删除

import org.apache.commons.collections.buffer.CircularFifoBuffer;

此类课程的正确替代品是什么?

找到了几个 建议

有简·哈德卡

或者也许还有另一种选择:

用 MinMaxPriorityQueue 替换缓冲区,它本身也不是线程安全的,但幸运的是,番石榴以 Queues.synchronizedQueue(Queue q) 调用的形式提供了线程安全的包装器。因为我们已经在其他地方使用了番石榴,所以应该可以使用库而不是 commons。不确定两者的性能比较。

塞德里克·赖兴巴赫

看起来 Queues#synchronizedQueue 确实等同于 BufferUtils#synchronizedBuffer,即同步对包含的队列/缓冲区的每次访问。然而,在 Guava 中更精确的匹配 CircularFifoBuffer 可能是 EvictingQueue,或者,因为同步包装器适用于任何队列,甚至 Java 自己的 Apache 的新 CircularFifoQueue。

我没有在邮件列表发行说明中找到答案

4

1 回答 1

2

在任务COLLECTIONS-432 Replace Buffer interface with java.util.Queue 中找到答案

BoundedFifoBuffer 被替换为 java.util.concurrent.ArrayBlockingQueue

CircularFifoBuffer 被 java.util.concurrent.ArrayBlockingQueue 取代。

PredicatedBuffer 转入 PredivatedBuffer

PriorityBuffer 替换为 java.util.PriorityQueue

SynchronizedBuffer 替换为 java.util.concurrent.SynchronizedQueue

BlockingBuffer 替换为 java.util.concurrent.BlockingQueue(实用 java.util.concurrent.ArrayBlockingQueue 或 java.util.concurrent.SynchronizedQueue)

BoundedBuffer 替换为 java.util.concurrent.ArrayBlockingQueue

TransformedBuffer 转入 TransformedQueue

UnboundedFifoBuffer 替换为 java.util.concurrent.ArrayBlockingQueue

于 2020-06-11T14:02:29.250 回答