2012-02-12 3 views
0

Я новичок в программировании на Java. У меня есть несколько вопросов о том, как реализовать RingFiFoBuffer:Как реализовать RingFiFoBuffer

  1. Могу ли я хранить большие файлы XML в этом буфере? Если да, то насколько велика?
  2. Может ли несколько потоков вставлять/удалять/извлекать записи из RingBuffer одновременно?
  3. Сколько записей я могу хранить?
  4. Есть ли какой-либо учебник, который я могу увидеть, как написать код.

я нашел только http://commons.apache.org/collections/apidocs/org/apache/commons/collections/buffer/CircularFifoBuffer.html

ответ

1

Вопрос 1 и 3: То есть ограничивается только памятью присвоенного процесса Java, который выполняет свою программу.

Qestion 2: Доступ к коллекции, как указано в CircularFifoBuffer, обычно требует «синхронизировать» их. Связанный JavaDoc уже содержит код для синхронизации его:

Buffer fifo = BufferUtils.synchronizedBuffer(new CircularFifoBuffer()); 
+0

Будет ли это работать? http://pastebin.com/JxFERsAm –

1

Могу ли я хранить большие XML-файлы в этот буфер? Если да, то насколько велика?

Вы ограничены только дисковым пространством с файлами с отображением памяти.

Может ли несколько потоков вставлять/удалять/извлекать записи из RingBuffer одновременно?

Это зависит от вашей реализации. Обычно кольцевые буферы распределяются между потоками.

Сколько записей я могу хранить?

Это то, что вы обычно ограничиваете при создании кольцевого буфера, так что это зависит от вас. Его обычно разумно держать их до минимума, так как большие кольцевые буферы часто могут быть медленнее, чем более плотные кольцевые буферы. Таким образом, практический предел может зависеть от вашего приложения и используемого оборудования.

Есть ли какой-либо учебник, который я могу увидеть, как написать код.

Лучший пример, который я знаю, это библиотека Disruptor. Его довольно продвинутый, но имеет лучшую документацию, чем я могу себе представить. (В том числе библиотеки, я написал;)

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