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プロセスに割り当てるメモリによってのみ制限されます。

Qestion 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 に答える