假設我有一個從客戶端發送到服務器的請求ID的散列集。服務器的響應返回我發送的請求ID,然後我可以從哈希集中刪除。這將以多線程的方式運行,因此多個線程可以添加和刪除哈希集中的ID。但是,由於生成的ID是唯一的(來自線程安全源,因此我們假設現在每個新請求都會更新一個AtomicInteger
),那麼HashSet
需要是ConcurrentHashSet
?如果線程使用不同的密鑰,是否需要ConcurrentHashSet?
我認爲這可能會導致問題的唯一情況是,如果HashSet
遇到衝突可能需要數據結構更改爲基礎HashSet
對象,但它似乎不會在此用例中發生。
HashSet實現需要支持併發(如'ConcurrentHashSet')或者由'Collections.synchronizedSet'封裝。 –