我想升级到apache.commons.collections4,但是删除了CircularFifoBuffer
和UnboundedFifoBuffer
等某些类
import org.apache.commons.collections.buffer.CircularFifoBuffer;
这些类的正确替代品是什么?
找到几个suggestions:
hadJan Haderka
或者也许还有另一种选择:
用MinMaxPriorityQueue替换缓冲区本身也不是线程安全的,但是guava幸运地以Queues.synchronizedQueue(Queue q)调用的形式提供了线程安全包装器。由于我们已经在其他地方使用了番石榴,因此可以使用库而不是通用库。不确定两种方法的性能比较。
Cedric Reichenbach
似乎Queues#synchronizedQueue确实等同于BufferUtils#synchronizedBuffer,即同步对包含的队列/缓冲区的每次访问。但是,在Guava中,CircularFifoBuffer的更精确匹配可能是EvictingQueue,或者,因为同步包装程序可用于任何Queue,甚至Java自己的Apache的新的CircularFifoQueue。
我在mailing list或release notes中找不到答案
在任务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