0

我是 Java 编程新手。我有几个关于如何实现 RingFiFoBuffer 的问题:

  1. 我可以将大的 XML 文件存储到这个缓冲区中吗?如果是的话有多大?
  2. 多个线程可以同时从 RingBuffer 插入/删除/获取记录吗?
  3. 我可以存储多少条记录?
  4. 是否有任何教程可以让我看到如何编写代码。

我只找到http://commons.apache.org/collections/apidocs/org/apache/commons/collections/buffer/CircularFifoBuffer.html

4

2 回答 2

1

问题 1 和 3:这仅受您分配给执行程序的 Java 进程的内存限制。

问题 2:访问像引用的 CircularFifoBuffer 这样的集合通常需要“同步”它们。链接的 JavaDoc 已经包含用于同步它的代码:

Buffer fifo = BufferUtils.synchronizedBuffer(new CircularFifoBuffer());
于 2012-02-12T14:55:44.460 回答
1

我可以将大的 XML 文件存储到这个缓冲区中吗?如果是的话有多大?

您仅受内存映射文件的磁盘空间限制。

多个线程可以同时从 RingBuffer 插入/删除/获取记录吗?

这取决于您的实施。通常环形缓冲区在线程之间共享。

我可以存储多少条记录?

这是您在创建环形缓冲区时通常会限制的内容,因此由您决定。将这些保持在最低限度通常是明智的,因为较大的环形缓冲区通常比更紧凑的环形缓冲区要慢。因此,实际限制可能取决于您的应用程序和使用的硬件。

是否有任何教程可以让我看到如何编写代码。

我知道的最好的例子是 Disruptor 库。它相当先进,但比我能想到的任何文档都要好。(包括我写的库;)

http://code.google.com/p/disruptor/

于 2012-02-12T17:37:53.850 回答