我正在寻找一个类似于ArrayBlockingQueue的库。就是这样,我不需要提供线程安全功能(为了更好的性能),因为它在ReentrantLock
方法中使用offer(E e)
。
我想要的是
我在Java标准库中找不到ArrayQueue
。或者,我错过了任何课程吗?
答案 0 :(得分:1)
BoundedFiFoBuffer中有一个Common.Collections,其中包含以下属性:
BoundedFifoBuffer是一个非常有效的Buffer实现,具有固定的大小。
BoundedFifoBuffer的删除顺序基于插入顺序;元素的删除顺序与添加元素的顺序相同。
迭代顺序与删除顺序相同。
请注意,此实现未同步。
尝试将元素添加到完整缓冲区时抛出BufferOverflowException。
答案 1 :(得分:1)
只需使用ArrayList并在添加时检查“完整性”吗?或者围绕它编写简单的包装。
答案 2 :(得分:0)
使用ConcurrentLinkedQueue(有关详细信息,请参阅http://download.oracle.com/javase/6/docs/api/java/util/concurrent/ConcurrentLinkedQueue.html)
答案 3 :(得分:0)
http://commons.apache.org/collections/api-2.1.1/org/apache/commons/collections/BoundedFifoBuffer.html应该符合您的需求。要小心,因为它总是从add返回true,而是在你超出界限时抛出
答案 4 :(得分:0)
我会使用ArrayBlockingQueue,除非你知道它不够快。如果每秒发送数百万个对象,可以考虑对它们进行批处理以减少开销。如果你每秒只有几十万,那就不太重要了。