我只是想探索ThreadSafe是什麼意思?ConcurrentHashMap的KeySet迭代器是線程安全的嗎?
下面是我的理解:
它看起來就像是我;允許多個線程同時訪問集合;這與其同步無關。例如任何沒有同步關鍵字的方法;是線程安全的,意味着多線程可以訪問它。
開發人員選擇在多線程訪問時維護此方法的一些邏輯(同步)以保持數據完整性。這與線程安全是分開的。
如果我上面的陳述是錯誤的;剛剛看了下面的JAVA DOC對`的ConcurrentHashMap:
的keySet:視圖的iterator是一個「弱一致」迭代器,不會拋出 ConcurrentModificationException,並且確保遍歷元素構造後迭代器的存在,可能(但不能保證)反映施工後的任何修改。
以上聲明說keySet迭代器不保證數據的完整性;而多線程正在修改集合。
能否請您回答我* ConcurrentHashMap的KeySet迭代器是線程安全的嗎?
而我對線程安全的理解是正確的?
你的問題本身有答案。 – Batty
正如javadoc所說的,這非常清晰,沒有答案能更好地或更清晰地解釋它。你不明白什麼? – Bohemian
ConcurrentHashMap keySet()是線程安全的,因此可能不需要同步或獲取副本。 –