競合状態を追跡しようとしていますが、すべての兆候がConcurrentHashMap.putIfAbsent()
. 2 つのスレッドが同じキーを使用して空のマップを呼び出した場合putIfAbsent()
、両方がルックアップを実行してキーがまだ存在しないことを確認できるため、両方のスレッドがそれを追加しようとする可能性はありますか? なんらかの理由で、私が最初に使い始めたときputIfAbsent()
、通話を同期する必要があるとは思いませんでした。しかし、タイミングが正しかった場合、両方のスレッドが値を追加するのをどのように防ぐことができるかわかりません。生産外でこれを再現することはできませんでした。
ありがとう