2012-05-10 9 views
4

誰でも、結合されたconcrrent循環キューの実装(またはオープンソース)、またはAndroidクラス/ javaに組み込まれている利用可能なAPIクラスについて知っていますか?アンドロイド/ java - 効率的な並行循環キューを探しています

このコレクションに必要な並行(同期化またはロックベースの)操作は、少なくともエンキューとデキューですが、エンキューでも十分です。私は必要なコレクションがわからない人のための

、ここでいくつかの詳細情報です:有界

  • は - それにできるアイテムの最大数を持っています。
  • concurrent - 複数のスレッドが何らかのロックなしで効率的に操作を実行できるようにします。これは同期化されたソリューションとは逆です。これは、単一のスレッドでのみ操作を実行できるようにします。
  • cyclic - アイテムを塗りつぶしコレクションに入れると、新しいアイテムが最も古いアイテムに置き換わります。

あなたは非常に多くのdisruptorのように聞こえるが、それは内蔵していません、外部ライブラリです。私の知る限りでは、組み込みのリングバッファのデータ構造は、Javaの標準ではありません記述する何

+0

'ArrayBlockingQueue.java'(フレームワークソースで利用可能)をコピーし、最後のアイテムをデキューするために' #offer(T) 'と' #put(T) 'メソッドを変更する必要があります。最後の項目を追い出す即時限定キュー。 – Jens

+0

@Jens - ArrayBlockingQueueは、複数のスレッドによる同時アクセスをソースから判断することはできません。 – mcfinnigan

+0

正しいだけではありませんが、循環的ではありません。アイテムを塗りつぶしたキューに入れようとすると、塗りつぶされなくなるまで待ちます。反対の場合 - アイテムを取得しようとすると空のキューであれば、それが空にならなくなるまで待ちます。 –

答えて

0

を助けてくださいとしょうかん。

+0

が正しい。それは似ています。それがまさに私が必要とするものだと思いますか?彼らは使用法のサンプルコードを持っていますか?もしそうなら、私はあなたにVを与えるでしょう。 :) –

+0

[技術解説書](http://disruptor.googlecode.com/files/Disruptor-1.0.pdf)[PDF]のポイント4.7と[wikiの] http(http ://code.google.com/p/disruptor/wiki/CodeExampleDisruptor2x)。ディスラプターが正確に必要なものであるかどうかだけを知ることができます:) –

+0

サンプルコードは、キューが実際にどのようなものに見えません。また、BatchHandler、batchConsumer、ConsumerBarrier、およびProducerBarrierの目的がわからない。このライブラリを使用するエンキューおよびデキューのメソッドを実装するコードを親切に表示しますか? –

関連する問題