0

イベント処理では、関数が値をコレクションに入れ、別の関数が同じコレクションから値を削除します。アイテムは、ソース (ソケット) から受け取った順序でコレクション内に配置し、同じ方法で読み取る必要があります。そうしないと、結果が変わります。

キューはほとんどの人が推奨するコレクションですが、同時に、アイテムが追加されているときにキューがブロックされているため、他の関数は追加が完了するまで待機する必要があり、非効率的であり、操作の待ち時間が時間の経過とともに増加します.

たとえば、あるスレッドがキューから読み取り、別のスレッドが同じキューに書き込みます。ロックが解放されるまで、いずれかの操作がキューで一度に実行されます。これを回避するデータ構造はありますか。

4

2 に答える 2

3

ConcurrentLinkedQueueはその例の 1 つです。から他のクラスをご覧くださいjava.util.concurrent

LMAX Disruptorなど、特定のケース向けのさらに高性能なサードパーティ ライブラリがあります。

于 2016-10-15T09:13:49.620 に答える