簡體   English   中英

ConcurrentHashMap操作

[英]ConcurrentHashMap operations

以下是ConcurrentHashMap的Java文檔中的一些內容

此類遵循與Hashtable相同的功能規范,並且包括與Hashtable的每個方法相對應的方法的版本。 但是,即使所有操作都是線程安全的,檢索操作也不需要進行鎖定,並且不支持以阻止所有訪問的方式鎖定整個表。

聲明的含義是什么

盡管所有操作都是線程安全的

從上一段開始? 任何人都可以用put()或get()方法的任何示例進行解釋嗎?

ConcurrentHashMap允許從多個線程並發修改Map,而無需阻止它們。 Collections.synchronizedMap(map)創建一個阻塞Map,這會降低性能,盡管可以確保一致性(如果使用正確)。

如果需要確保數據一致性,並且每個線程都需要具有最新的地圖視圖,請使用第二個選項。 如果性能至關重要,請使用第一個,並且每個線程僅將數據插入到映射中,而讀取的頻率則較低。

您的問題很奇怪。 如果您了解“線程安全性”的含義,那么您將能夠自己理解它如何應用於get()和put()。 如果您不了解線程安全性,那么就沒有必要專門針對get()和put()對其進行解釋。 您確定這不是作業問題嗎?

但是,無論如何回答您的問題,ConcurrentHashMap是線程安全的事實意味着,如果您有多個線程同時在同一張圖上執行put(),那么:a)不會損壞該對象的內部數據結構map和:b)其他執行get()的線程將看到其他線程輸入的所有值。 對於非線程安全的Map(例如HashMap),不能保證所有這些。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM