エントリの結合を可能にする java.util.concurrent.BlockingQueue の効率的な (すべてを同期することなく) 実装はありますか?
結合とは、着信アイテムをキュー上の既存の「等しい」エントリ (存在する場合) とマージすることを意味します。それ以外の場合、アイテムは通常どおり最後に追加されます。
エントリの結合を可能にする java.util.concurrent.BlockingQueue の効率的な (すべてを同期することなく) 実装はありますか?
結合とは、着信アイテムをキュー上の既存の「等しい」エントリ (存在する場合) とマージすることを意味します。それ以外の場合、アイテムは通常どおり最後に追加されます。
この答えをチェックしてください:並行セットキュー。マージによって意味するのが、すでにキューにあるものと等しい要素を無視することだけである場合、それはあなたの質問の重複である可能性があります。
BlockingQueue
方法をスポーツしcontains
ます。自由に使用できますが、同期することを忘れないでください。contains
はO(n)fxでLinkedBlockingDeque
あるため、を使用してより効率的なアプローチを試すことができますHashSet
。
タイムスタンプとソースがその 2 つの属性である場合、イベントの結合を確認できません。同じユーザーが互いに 1 ナノ秒以内に 2 つのイベントを送信しない限り、2 つのイベントが等しいとは見なされず、組み合わせるべきではないと思います。