ConcurrentHashMapMapそれらをブロックする必要なしにいくつかのスレッドからの要素の同時変更を許可しますが、オブジェクトHashMap全体をブロックし、正しいようにその要素ではありませんか?HashMapConcurrentHashMap
ConcurrentHashMapしかし、あるスレッドが10としてカウントされ、その間に別のスレッドがそのスレッドからアイテムを削除した場合はどうなるでしょうか。次に、その最初のスレッド数はfalseになりますよね?
ConcurrentHashMapMapそれらをブロックする必要なしにいくつかのスレッドからの要素の同時変更を許可しますが、オブジェクトHashMap全体をブロックし、正しいようにその要素ではありませんか?HashMapConcurrentHashMap
ConcurrentHashMapしかし、あるスレッドが10としてカウントされ、その間に別のスレッドがそのスレッドからアイテムを削除した場合はどうなるでしょうか。次に、その最初のスレッド数はfalseになりますよね?
あなたの質問への答えは、最も自然な場所、のjavadocsにありConcurrentHashMapます。
下記参照:
通常、取得操作(getを含む)はブロックされないため、更新操作(putおよびremoveを含む)と重複する場合があります。取得は、開始を保持している最後に完了した更新操作の結果を反映します。putAllやclearなどの集計操作の場合、同時取得は一部のエントリのみの挿入または削除を反映する場合があります。同様に、イテレータと列挙は、イテレータ/列挙の作成時または作成以降のある時点でのハッシュテーブルの状態を反映する要素を返します。ConcurrentModificationExceptionをスローしません。ただし、イテレータは、一度に1つのスレッドのみが使用するように設計されています。