2017-05-17 8 views
0

あまりに頻繁ではない1日に1〜2回更新されるアカウントのリストがあります。
このデータには、かなりの間隔で「含む」ルックアップがあります。
理想的なデータ構造はConcurrentLinkedListでしたが、残念ながらそれはありません。
CopyOnWriteArrayListは唯一の優先オプションですか?並行してリストを更新する

+0

こんにちはなぜ、最初にルックアップする何らかの種類のツリーまたはハッシュマップデータ構造を考えていない –

+0

'CopyOnWriteArrayList'はユースケースに最適です。あなたはそれに対して何を持っていますか? – shmosel

+0

あなたが探しているかもしれません。Set set = Collections.newSetFromMap(new ConcurrentHashMap ()); –

答えて

0

ほとんどの場合、なぜ並行データ構造が必要なのですか?代わりに、HashSetまたはHashMapを使用できます。より速く読むことができます。あまり頻繁に更新されないので、書き込み部分を明示的に同期させることができます。

+0

これは間違っているように見えます。なぜなら、あるスレッドが他のスレッドを書いている間に失効したデータを読み込むべきではないからです。 –

+0

しかし、これはあまり頻繁には更新されないので、明示的にロックを使用してそれを処理することができます。右 ?。また、あなたの読書のパフォーマンスはあなたのケースでもっと速くなければなりません、リストには包含のための複雑さがあります。 –

+0

あなたは、複数のスレッドが読み取ることができる明示的なロックではなく、読み取り/書き込みロックを個別に実装する必要があります。使用できるように設定されています。 set = Collections.newSetFromMap(new ConcurrentHashMap ()); –

関連する問題